gdb debug

来源:互联网 发布:人口数据 昆明 编辑:程序博客网 时间:2024/04/29 14:49

break function
gdb <program> core core 是程序非法执行后 core dump 文件

gdb <program> pid 如果你的程序是一个服务程序,指定这个服务运行时的进程ID GDB 自动attach并调试

catch <event> 捕捉程序运行时的一些事件,如:载入共享库(动态链接库) 或者 c++的异常
load 加载库文件
condition <bnum> <expression> 修改断点号为bnum的停止条件为expression
step 如有函数调用 会进入该函数
next 不会进入该函数
print 显示变量值
print *array@len 显示数组array 的长度len
直接回车 表示执行上一次的命令
info threads
显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。
前面有*的是当前调试的线程。

thread ID
切换当前调试的线程为指定ID的线程。

thread apply ID1 ID2 command
让一个或者多个线程执行GDB命令command。

thread apply all command
让所有被调试线程执行GDB命令command。

set scheduler-locking off|on|step
实际使用过多线程调试的人都可以发现,在使用step或者continue命令调试当前被调试线程的时候,其他线程也是同时执行的,
怎么只让被调试程序执行呢?通过这个命令就可以实现这个需求。
off 不锁定任何线程,也就是所有线程都执行,这是默认值。
on 只有当前被调试程序会执行。
step 在单步的时候,除了next过一个函数的情况(熟悉情况的人可能知道,这其实是一个设置断点然后continue的行为)以外,只有当前线程会执行。

 

原创粉丝点击