今天在用gdb调试sheepdog时,在程序fork出子进程后,整个gdb程序就退出了,无法继续跟踪,网上找了半天找到了解决方法.

解决方法:

设置detach-on-fork参数

set detach-on-fork [on|off]

  • on: 断开调试follow-fork-mode指定的进程。
  • off: gdb将控制父进程和子进程。follow-fork-mode指定的进程将被调试,另一个进程置于暂停(suspended)状态

将detach-on-fork 设置为off即可

跟踪子进程的方法:

默认情况下,gdb会继续跟踪父亲进程,无法对子进程进行调试

设置follow-fork-mode可以解决这个问题

follow-fork-mode的用法为:

set follow-fork-mode [parent|child]

  • parent: fork之后继续调试父进程,子进程不受影响。
  • child: fork之后调试子进程,父进程不受影响。
(gdb) set follow-fork-mode child

本文地址:http://www.yaronspace.cn/blog/index.php/archives/1072

来自yaronspace.cn  本文链接:http://yaronspace.cn/blog/archives/1072