作个FAQ,在常见的x86平台上如何gdb调试fork或者exec出来的子进程
1. 在fork语句上设置断点,修改fork返回的值。这种做法并没有真正去
触动已经存在的子进程,而是强迫夫进程去走子进程的流程。对付简单
情况都非常有效。
2. 修改源代码,在fork后面,父进程和子进程中都加上while(debug_lock) sleep(1);
这样的语句。fork后父进程detach,两者就都可以attatch了,attatch后
set debug_lock = 0使得程序流程正常继续。这种做法可以调试子进程,
但是需要修改源代码。
3. 如果你使用的gdb版本>= 6.0,考虑使用
(gdb) set follow-fork-mode
ask child parent
这里修改
(gdb) set follow-fork-mode child
摘录自:
http://hi.baidu.com/thinkinnight/blog/item/74ec4e0f429be7286159f361.html
阅读(2642) | 评论(0) | 转发(0) |