如何调试远程 linux 二进制文件?

Posted

技术标签:

【中文标题】如何调试远程 linux 二进制文件?【英文标题】:How to debug a remote linux binary? 【发布时间】:2010-10-13 04:02:05 【问题描述】:

情况如下:

我有一个崩溃的 linux 二进制文件。没有日志文件、跟踪文件等。我需要能够将调试器附加到它(我在本地有源)并跟踪错误。

解决这个问题的最简单、最好的方法是什么?

【问题讨论】:

【参考方案1】:

远程调试相当简单:在目标平台上,使用 GDBserver 启动应用程序,同时指定用于侦听传入 TCP 连接的主机和端口:

  gdbserver HOST:PORT PROG [ARGS ...]

在开发工作站上,启动跨目标 GDB:

  powerpc-7450-linux-gnu-gdb PROG

请务必指定未剥离的可执行文件。在 GDB 控制台中,键入:

  target remote HOST:PORT
  break main
  continue

Remote cross-target debugging with GDB and GDBserver

【讨论】:

【参考方案2】:

gdb 好像支持远程调试。

我从未使用过它,但 http://davis.lbl.gov/Manuals/GDB/gdb_17.html 看起来像是一个开始。

基本上,您在目标机器上的 gdbserver 下运行程序,gdb 连接(通过 TCP 或串行)到 gdbserver。

【讨论】:

以上是关于如何调试远程 linux 二进制文件?的主要内容,如果未能解决你的问题,请参考以下文章

调试选项 -g 如何更改二进制可执行文件?

如果没有文件、objdump 或 gdb,如何知道二进制文件是不是包含调试符号?

剥离二进制文件后的调试部分

Linux软件安装调试 源代码包编译安装和 二进制包配置

Eclipse 远程调试预启动脚本?

如何将多个输入从文件重定向到在gdb中调试的二进制文件?