我花了一整天的时间试图找到一种从Qt创造者或Eclipse中启用GDB调试的方法。我了解到,启动目标应用程序基本上有两种方法:
ssh host gdb)我能够使用这两种方法远程启动gdb并启动应用程序。但是,GDB从不响应IDE中设置的任何断点。另外,我不能暂停应用程序来检查程序状态。在Qt中,我只得到一个模糊的堆栈跟踪(我可能一直在查看ssh或gdb的跟踪,实际上.)。
有人能帮我开始吗?
进步!
我发现QTCreator2.0有一个叫做“附加和调试远程应用程序”的特性。它基于gdbserver。好的是它停止在IDE的断点上。然而,有两个问题:
我应该提到,远程可执行文件是用GCC的旧版本编译的,而不是安装在我的本地PC上的版本。也许其中一些问题与此有关。
更新
我应该提到的是,我切换到通过SSH在远程计算机上运行cgdb。
基于Qt的远程解决方案并不稳定。由于神秘的“信号接收”信息,GDB倾向于退出。
发布于 2010-08-19 14:14:14
由于makefile构建系统的特殊性,调试符号中包含的文件引用如下所示:
../src/main.cpp
../../src/utils/logger.cpp这对于GDB来说没有问题,但是无法将这些路径映射到实际文件。我能够通过在GDB init文件中添加'dir‘语句来修复这个问题:
dir src
dir src/utils
...现在起作用了。
发布于 2010-08-18 19:40:15
因此,您的主机上的GDB (您开发和编译的机器,所以您有)您必须让它访问“符号文件”。
我通常不使用gdbserver,但是GDB和gdbserver直接用于交叉编译的程序远程调试。您可以尝试确保这对您有效,然后在中找到缺少的选项(或者这将帮助您找到缺少的内容)。
在目标机器上运行:
gdbserver :5000 yourprogram在主机上,运行gdb,然后加载符号文件:
(gdb) symbol-file yourprogram在主机上的GDB上,您必须连接到远程gdbserver:
(gdb) target remote target_ip_address:5000从那时起,您可以在主机上使用GDB控制目标上的程序。
我希望这能帮到你!
https://stackoverflow.com/questions/3512961
复制相似问题