使用gdb调试chrooted程序

Debug chrooted program with gdb

本文关键字:程序 chrooted 调试 gdb 使用      更新时间:2023-10-16

我所处的情况是,我必须调试的程序必须在chrooted环境中运行。现在,我已经在另一个根目录中安装了gdb,并复制了源代码,这适用于基本的设置,但不是很方便,因为每当我进行更改和重新编译时,我都必须重新同步源代码,并且我必须复制所有的gdb设置,等等。

有没有什么方法可以在我的正常环境中运行调试器,调试在chrooted环境中运行的程序?我使用的是Arch Linux。

您可以使用远程调试:

在chroot中,您只需要您通常的运行时加上程序gdbserver。然后运行:

chroot$ gdbserver :8888 myprogram

在开发环境中,从源目录运行gdb并将其连接到服务器

$ gdb myprogram
(gdb) target remote :8888

您可以开始调试。

我喜欢在continue之前执行br main,因为调试器将在_start中停止,太早而没有用处。

PS:使用远程调试时要注意安全问题,因为8888是一个侦听TCP端口。