linux gdb 调试多线程 多进程 显示宏
来源:互联网 发布:linux cp 排除文件夹 编辑:程序博客网 时间:2024/04/30 09:50
一、gdb调试多线程
gdb)info thread 查看当前进程的线程。
gdb)thread <ID> 切换调试的线程为指定ID的线程。
gdb)break file.c:100 thread all 在file.c文件第100行处为所有经过这里的线程设置断点。
gdb)set scheduler-locking off|on|step。在使用step或者continue命令调试当前被调试线程的时候,其他线程也是同时执行的,怎么只让被调试程序执行呢?通过这个命令就可以实现这个需求。 off 不锁定任何线程,也就是所有线程都执行,这是默认值。 on 只有当前被调试程序会执行。 step 在单步的时候,除了next过一个函数的情况(熟悉情况的人可能知道,这其实是一个设置断点然后continue的行为)以外,只有当前线程会执行。
gdb)thread apply ID1 ID2 command 让线程id号为ID1,ID2执行GDB的 continue,break,step,next等命令。
gdb)thread apply all command 让所有被调试线程执行GDB的 continue,break,step,next等命令。
二、gdb调试多进程
1、follow-fork-mode方法
这是一种比较简单的方式,通过set follow-fork-mode的方式来调试父进程或子进程
2、attach的方式,这种应该是比较常用的方式,也是很多文章中介绍的一种方式。这种方式一般需要增加一些代码来实现对进程的attach
下面只介绍follow-fork-mode方法
在程序fork之前输入
gdb)set follow-fork-mode [parent|child]
follow-fork-mode的用法为:
set follow-fork-mode [parent|child]
- parent: fork之后继续调试父进程,子进程不受影响。
- child: fork之后调试子进程,父进程不受影响。
因此如果需要调试子进程,在启动gdb后:
(gdb) set follow-fork-mode child
并在子进程代码设置断点。
detach-on-fork参数,指示GDB在fork之后是否断开(detach)某个进程的调试,或者都交由GDB控制:
set detach-on-fork [on|off]
- on: 断开调试follow-fork-mode指定的进程。
- off: gdb将控制父进程和子进程。follow-fork-mode指定的进程将被调试,另一个进程置于暂停(suspended)状态
在GDB下,我们无法print宏定义,因为宏是预编译的。但是我们还是有办法来调试宏,这个需要GCC的配合。
在GCC编译程序的时候,加上-ggdb3参数,这样,你就可以调试宏了。
另外,你可以使用下述的GDB的宏调试命令 来查看相关的宏。
info macro – 你可以查看这个宏在哪些文件里被引用了,以及宏定义是什么样的。 macro – 你可以查看宏展开的样子。
四、条件断点
条件断点
条件断点是语法是:break [where] if [condition],这种断点真是非常管用。尤其是在一个循环或递归中,或是要监视某个变量。注意,这个设置是在GDB中的,只不过每经过那个断点时GDB会帮你检查一下条件是否满足。
- linux gdb 调试多线程 多进程 显示宏
- 【Linux】使用gdb调试多进程&多线程
- linux GDB 调试多进程多线程
- [Linux]gdb调试多进程多线程例程
- GDB调试多进程、多线程
- gdb多进程多线程调试
- gdb 多进程,多线程调试
- GDB多进程多线程调试
- gdb调试多线程多进程
- gdb调试多进程,多线程
- gdb调试多进程多线程
- gdb调试多进程多线程
- gdb调试多进程多线程
- gdb调试多进程、多线程
- gdb调试多进程多线程
- gdb调试多进程多线程
- Linux多进程和多线程的一次gdb调试实例
- Linux下用gdb调试多进程与多线程程序
- 在Eclipse中配置tomcat
- hadoop全套免费视频
- arm架构mmu
- 如何向App Store提交应用
- Android RecoverSystem 类
- linux gdb 调试多线程 多进程 显示宏
- 51单片机模拟电梯汇编程序
- 视频监控分辨率CIF、DCIF、D1格式的简介
- word中公式编辑器编辑的公式显示不全,如何解决?(除增大行间距的方法)
- 【JAVA】java使用
- Linux iptables 增删改查
- 33. 面向对象的LotusScript(六)之为自定义对象模拟事件
- CAS配置(一)-集成RESTFul
- apache 日子切割rotatelogs