0%

gdb命令进阶

获取所有线程堆栈:

(gdb) thread apply all bt

backtrace

可以在C代码中使用backtrace来获取线程堆栈,但是需要glibc支持

thread apply

'thread apply [thread-id-list]|[all] args', a command to apply a command to a list of threads

thread scheduler

set scheduler-locking off|on|step 
  • off 不锁定任何线程,也就是所有线程都执行,这是默认值
  • on 只有当前被调试程序会执行
  • step 在单步的时候,除了next过一个函数的情况
    (熟悉情况的人可能知道,这其实是一个设置断点然后continue的行为)以外,只有当前线程会执行
set print thread-events off|on

线程产生通知开关

commands

break foo if x>0
    commands
    printf “x is %d/n”,x
    continue
    end