使用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 变量名———跟踪查看一个变量,每次停下来显示他的值