我正在尝试对进行几个fork()调用的Linux二进制文件进行反向工程。我在Ubuntu上使用GDB 7.5。我正在尝试使用GDB附加到某个fork()(例如第二个调用)。唯一的方法是将follow-fork-mode设置为child并捕获对fork的所有呼叫并每次手动切换它吗?

#1 楼

您也可以按照文档中的说明使用set detach-on-fork off


文档还说:


如果选择关闭set detach-on-fork MODE模式,则GDB将保留
控制所有分叉过程(包括嵌套的分叉)。您可以使用
detach-on-fork命令在GDB的控制下列出
分叉的进程,并使用
info inferiors命令

从一个分支切换到另一个分支退出调试其中一个分叉的进程,您可以使用inferior命令从中分离
(允许它独立运行
),或者使用detach inferiors命令将其杀死。 >

#2 楼

您所描述的是我通常如何做到这一点。如果需要,可以在fork本身上设置断点提供了一个很好的位置来更改此模式。命令。

http://sourceware.org/gdb/onlinedocs/gdb/Forks.html