Chinaunix首页 | 论坛 | 博客
  • 博客访问: 147232
  • 博文数量: 12
  • 博客积分: 2069
  • 博客等级: 大尉
  • 技术积分: 257
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-16 13:29
文章分类

全部博文(12)

文章存档

2012年(5)

2011年(2)

2010年(4)

2008年(1)

分类: C/C++

2008-08-12 13:13:24

作个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) |
给主人留下些什么吧!~~