GDB常用调试命令以及多进程多线程调试
时间:2021-07-01 10:21:17
帮助过:8人阅读
- set target-async 1
- set pagination off
- set non-stop on
gdb支持的命里有两种类型:前台的(同步的)和后台(异步 )的。区别很简单,同步的在输出提示符之前会等待程序report一些线程已经终止的信息,异步则是直接返回。所以我们需要set target-async 1。set pagination off不要出现 Type <return> to continue 的提示信息 。最后一步是打开。
下面是常用命令:
- info threads 显示所有线程
- thread id 切换到指定线程
- break filename:linenum thread all 在所有线程相应行设置断点,注意如果主线程不会执行到该行,并且启动all-stop模式,主线程执行n或s会切换过去
- set scheduler-locking off|on\step 默认off,执行s或c其它线程也同步执行。on,只有当前相称执行。step,只有当前线程执行
- show scheduler-locking 显示当前模式
- thread apply all command 每个线程执行同意命令,如bt。或者thread apply 1 3 bt,即线程1,3执行bt。
主要是我们要用能用的上的,比如no-stop模式,一般多线程调试就很有用的。
四:core文件
- ulimit -c unlimited 生成core文件,也可以是指定大小,然后使用gdb ./main core启动,bt查看调用栈即可。
参考:https://segmentfault.com/a/1190000003733061
http://www.cnblogs.com/frankbadpot/archive/2010/06/23/1762916.html
GDB常用调试命令以及多进程多线程调试
标签:alt follow 环境 打印 运行 spec 源程序 reads nal