使用 gdb 调试 chroot 程序

Debug chrooted program with gdb

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

有什么方法可以让 运行 在我的正常环境中调试程序,从而在 chroot 环境中调试 运行 的程序?我在 Arch Linux.

您可以使用远程调试:

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

chroot$ gdbserver :8888 myprogram

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

$ gdb myprogram
(gdb) target remote :8888

然后就可以开始调试了。

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

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