使用gdb

时间:2015-11-13 14:57:10

标签: c++ linux debugging gdb chroot

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

有没有办法在正常环境下运行调试器,调试在chrooted环境中运行的程序?我在Arch Linux上。

1 个答案:

答案 0 :(得分:2)

您可以使用远程调试:

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

chroot$ gdbserver :8888 myprogram

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

$ gdb myprogram
(gdb) target remote :8888

你可以开始调试了。

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

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