当前位置:Gxlcms > 数据库问题 > GDB常用调试命令以及多进程多线程调试

GDB常用调试命令以及多进程多线程调试

时间:2021-07-01 10:21:17 帮助过:5人阅读

  1. #Enable the async interface  
  2. set target-async 1  
  3. #If using the CLI, pagination breaks non-stop  
  4. set pagination off  
  5. #Finall, turn it on  
  6. 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常用调试命令以及多进程多线程调试

标签:inf   add   address   cli   bar   单位   ignore   arc   有用   

人气教程排行