gpt4 book ai didi

c++ - 远程 GDB 调试

转载 作者:IT老高 更新时间:2023-10-28 23:01:05 24 4
gpt4 key购买 nike

我刚刚花了一整天的时间试图找到一种方法来从 Qt Creator 启用 GDB 调试。或 eclipse 。我了解到启动目标应用程序基本上有两种方法:

  • 使用 ssh(ssh 主机 gdb)
  • 使用 gdbserver

我能够使用这两种方法远程启动 gdb 并启动应用程序。但是,GDB 从不响应 IDE 中设置的任何断点。我也不能暂停应用程序来检查程序状态。在 Qt Creator 中,我只是得到一个模糊的堆栈跟踪(实际上我可能一直在查看 ssh 或 gdb 的跟踪......)。

谁能帮我开始?

进展!

我发现 Qt Creator 2.0 有一个名为“附加和调试远程应用程序”的功能。它基于 gdbserver。好消息是它在 IDE 的断点处停止。但是,有两个问题:

  • 当它遇到断点时,它只显示汇编代码,而不是源代码。
  • GDB 经常因为“收到信号”而退出

我可能应该提到,远程可执行文件是用旧版本的 GCC 编译的,而不是我本地 PC 上安装的版本。或许有些问题与此有关。

更新

我应该提到我切换到运行 cgdb通过 SSH 在远程计算机上。

基于 Qt Creator 的远程解决方案不稳定。 GDB 往往会因为神秘的“收到信号”消息而退出。

最佳答案

所以你的主机上的 GDB(你开发和编译的机器,所以你有 Qt Creator)你必须给它访问“符号文件”的权限。

我通常不使用Qt Creator,而是直接使用GDB和gdbserver进行交叉编译程序的远程调试。您可以尝试一下以确保它适合您,然后可能会在 Qt Creator 中找到缺失的选项(或者这可能会帮助您找到缺失的内容)。

在目标机器上运行:

gdbserver :5000 yourprogram

在宿主机上运行gdb,然后加载符号文件:

(gdb) symbol-file yourprogram

在主机上的 GDB 上,您必须先连接才能将 GDB 连接到远程 gdbserver:

(gdb) target remote target_ip_address:5000

从那时起,您可以在主机上使用 GDB 来控制目标上的程序。

我希望这会有所帮助!

关于c++ - 远程 GDB 调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3512961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com