将 GDB 附加到特定的分支

逆向工程 linux 数据库 多进程
2021-06-17 07:08:16

我正在尝试对一个进行多次fork()调用的 Linux 二进制文件进行逆向工程我在 Ubuntu 上使用 GDB 7.5。我试图用 GDB 做的是附加到某个fork()(比如第二个调用)。是做这组的唯一途径follow-fork-mode,以child和捕捉到所有通话fork和手动切换每一次呢?

2个回答

您也可以使用set detach-on-fork off,如文档中所述:

set detach-on-fork MODE 告诉 gdb 是在 fork 之后分离其中一个进程,还是保留对它们两个的调试器控制。

文档也这样说:

如果您选择detach-on-fork关闭模式,那么 GDB 将保留对所有分叉进程(包括嵌套分叉)的控制。可以通过使用该列表GDB的控制下,叉状过程 info inferiors命令,通过使用从一个叉切换到另一个inferior命令

要退出调试分叉进程之一,您可以使用该detach inferiors命令从它分离(允许它独立运行),或者使用该kill inferiors命令终止它

你所描述的是我通常如何处理这个问题。fork如有必要,自身上设置断点提供了更改此模式的好地方。

或者,如果子线程/进程“稳定”,您可以在事后使用inferior命令切换到它们

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