我遇到的情况是我必须调试的程序必须在chrooted环境中运行。现在我已经在另一个根目录中安装了gdb并复制了源代码,这对于初步设置很有用,但不是很方便,因为我必须在每次进行更改和重新编译时重新同步源代码,我必须复制我所有的gdb设置等等。
有没有办法在正常环境下运行调试器,调试在chrooted环境中运行的程序?我在Arch Linux上。
答案 0 :(得分:2)
您可以使用远程调试:
在chroot中,您只需要通常的运行时加上程序gdbserver
。然后运行:
chroot$ gdbserver :8888 myprogram
在开发环境中,从源目录运行gdb
并将其连接到服务器
$ gdb myprogram
(gdb) target remote :8888
你可以开始调试了。
我喜欢在br main
之前执行continue
,因为调试器将在_start
停止,太早而无法使用。
PS:请注意使用远程调试时的安全问题,因为8888是一个侦听TCP端口。