使用gdb调试多进程多线程程序

来源:互联网 发布:古墓丽影崛起n卡优化 编辑:程序博客网 时间:2024/05/18 19:45

使用gdb调试多进程多线程程序

1.多进程调试代码测试用例 :

以下是我的代码:
这里写图片描述

我的编译过程:

gcc  -o test1 test1.c  -g

调试:gdb test1

这是编译和调试的过程:

这里写图片描述

调试的结果:

这里写图片描述

2.多线程调试代码测试用例:多线程程序在链接时应该加上-lpthread或者-pthread
1)多线程调试代码测试用例1

这里写图片描述

调试的结果:
这里写图片描述

2)多线程调试代码测试用例2

这里写图片描述

调试结果:
这里写图片描述

上面两个用例的编辑和调试过程均如下:

编译过程:

gcc -lpthread -o pthreads pthreads.c -g

调试过程:

gdb pthreads

这是编译和调试的过程:
这里写图片描述

这是关于线程的Makefile的内容:
这里写图片描述

3.对调试指令进行总结

1)在使用gdb调试之前,首先必须gcc -g命令生成带有调试信息的可执行程序。否则调试时会看到一堆汇编代码:
例如对于线程的编译就是这样写:

gcc -lpthread -o pthreads pthreads.c -g

2)常用的gdb命令总结
gdb pthreads—————–启动gdb调试pthreads
(gdb) l————————–列出源代码,默认是10行(按回车继续执行上一条命令)
(gdb) l n———————–列出源代码第n行附近的代码
(gdb) l 函数名—————–出某个函数的源代码
(gdb) r————————-单步运行程序
(gdb) s————————-进入函数调试
(gdb) b(行号)————–在某行设置断点
(gdb) b(函数名)———–在某函数开头设置断点
(gdb) q————————退出gdb
(gdb) n————————单条执行
(gdb) p————————打印变量值
(gdb) finish——————-执行到当前函数返回,然后停下来等待命令
(gdb) display 变量名———跟踪查看一个变量,每次停下来显示他的值

原创粉丝点击