使用GDB调试多线程实例详解
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使⽤GDB调试多线程实例详解
先写⼀段多线程程序。
makefile
加上 -g参数⽣成可调式信息,可以进⾏调试。
pthread不是Linux下的默认的库,也就是在链接的时候,⽆法找到phread库中哥函数的⼊⼝地址,于是链接会失败。
在gcc编译的时候,附加要加 -lpthread参数即可解决。
gdb test 进⼊调试
需要调试的地⽅打下断点,run运⾏到断点处。
r 运⾏到断点处,info thread可以查看被调试的线程。
thread apply all bt 让所有线程打印堆栈信息
set scheduler-locking off|on|step
在使⽤step或continue命令调试当前被调试线程的时候,其他线程也是同时执⾏的,如果我们只想要被调试的线程执⾏,⽽其他线程停⽌等待,那就要锁定要调试的线程,只让它运⾏。
off:不锁定任何线程,所有线程都执⾏。
on:只有当前被调试的线程会执⾏。
step:阻⽌其他线程在当前线程单步调试的时候抢占当前线程。
只有当next、continue、util以及finish的时候,其他线程才会获得重新运⾏的。
show scheduler-locking:
这条命令是为了查看当前锁定线程的模式。
感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!。