gdb fork 多进程调试
来源:互联网 发布:stc15f104w数据手册 编辑:程序博客网 时间:2024/06/05 10:20
实例代码
fork多进程调试一般有一下3种方法:
1. follow-fork-mode
用法:set follow-fork-mode [parent|child]
进入gdb后,直接设置,默认是parent
所以如果想要调试子进程,进入gdb后设置set follow-fork-mode child,然后设置子进程的断点
可用使用show follow-fork-mode 来查询当前fork模式
如果在6.12.14行加断点,r后会停在6行处
使用follow-fork-mode,只能调试一个进程,不能同时调试父子进程
2. detach-on-fork mode
用法:set detach-on-fork [on|off]
on: 只调试父进程或子进程的其中一个(根据follow-fork-mode来决定),这是默认的模式。
off: 父子进程都在gdb的控制之下,其中一个进程正常调试(根据follow-fork-mode来决定),另一个进程会被设置为暂停状态。
如果设置了set detach-on-fork off且follow-fork-mode为parent,fork后子进程并不运行,而是处于暂停状态。
看一下log就明白了
注意,最好使用GDB 6.6或以上版本,如果你使用的是GDB6.4,就只有follow-fork-mode模式。
3. attach后多进程调试
上述方法还是不能同时调试两个进程,假设调试主进程,fork后,子进程已经不知道运行到何处了,所以这就需要让子进程先暂停一下。暂停的方法有很多
1> 最简单的就是sleep一下
else if(fpid == 0) {// child process
sleep(10); // 给你足够的时间去find子进程id(pstree -ap | grep a.out),然后attach
}
2> 加一段等待代码
3> chromium中
zygote进程在创建render进程时,正好需要zygote的real PID
参考
http://www.ibm.com/developerworks/cn/linux/l-cn-gdbmp/
阅读全文
0 0
- gdb调试fork多进程
- gdb fork 多进程调试
- GDB调试多进程的fork+exec
- gdb fork进程,多线程调试
- fork 多进程调试
- gdb 多进程调试
- gdb多进程调试
- gdb调试多进程
- GDB 调试多进程
- GDB多进程调试
- GDB多进程调试
- gdb多进程调试
- gdb 多进程调试
- GDB多进程调试
- gdb 多进程调试
- GDB 调试多进程
- gdb调试多进程
- GDB多进程调试
- 四种会话跟踪技术?
- Mybatis学习笔记--(三)使用注解
- 几种流行的数据库SQL分页
- JavaWeb中的request对象和reponse对象
- Python实现Android Apk 加固及多渠道打包
- gdb fork 多进程调试
- Byte[]和byte[]的转换
- HTTP、HTTPS
- bootstrap基础之二
- 权限
- 如何使用Vue中的slot
- Object doesn't support property or method 'validate' 错误
- 100 零崎的朋友很多Ⅰ
- 验证码(jsp的形式)