【问题标题】:Debug chrooted program with gdb使用 gdb 调试 chroot 程序
【发布时间】:2015-11-13 14:57:09
【问题描述】:

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

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

【问题讨论】:

  • 如果chroot可以访问loopback网络,就可以使用远程调试了。
  • 使用远程调试时,源查找会发生在客户端还是服务器端?
  • 当然是客户端!
  • 服务端只需要gdbserver和运行环境。从技术上讲,它甚至不需要调试符号。
  • 谢谢!您应该将其写为实际答案而不是评论。

标签: c++ linux debugging gdb chroot


【解决方案1】:

可以使用远程调试:

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

chroot$ gdbserver :8888 myprogram

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

$ gdb myprogram
(gdb) target remote :8888

你可以开始调试了。

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

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

【讨论】:

  • 得到(gdb) gdb target :8888 Undefined command: "gdb". Try "help". 是否需要特定版本的gdb?编辑:从 gdb/gdbserver 版本 7.9.1 开始,命令为 target remote :8888
  • @DarkFranX:这是一个错字,请参阅更新后的答案。
猜你喜欢
  • 2012-08-11
  • 2011-01-10
  • 1970-01-01
  • 2016-12-06
  • 2018-05-28
  • 2011-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多