Luc*_*lon 6 c++ embedded debugging qt4
我发现自己处于必须调试Qt应用程序而几乎没有任何调试工具的困难情况下:应用程序似乎开始使用越来越多的CPU,因为它一次又一次地运行相同的操作; 几个小时后,CPU完全饱和.
该应用程序在ARM Linux嵌入式设备上运行,其中gdb似乎不起作用,可能很难发现所提供的工具链的问题.strace似乎只报告计时器活动(这是一个OpenGL应用程序所以这是预期的).ltrace不可用,编译它会导致一项艰巨的任务,也许是无用的.我没有编写应用程序,但源代码可用.
我还能做些什么来发现应用程序在消耗这么多资源时忙于做什么?我必须跟踪应用程序执行的所有方法调用吗?有没有其他技术可以用来猜测问题或在哪里集中注意力?
编辑:这是gdb的问题之一:gdb在ARM上报告的回溯中只有问号.即使编写模拟segfault的十行应用程序也会导致这种情况.
您可以在机器上启用核心转储吗?然后,当它运行时,您可以向它发送 SIGABRT 并将核心转储复制到您的开发计算机,并使用交叉调试器检查它,并提供源代码和未剥离的可执行文件。
下次吸取惨痛的教训也很重要,不要使用如此支持不佳的工具链。
如果可以的话,您可以尝试另一个工具链,如果不支持 gdb,则至少需要 gdbserver。我对 CodeSourcery ARM Lite 工具链非常满意。
编辑:适合您情况的 gdb 有两种风格:
gdbserver 允许您在开发主机上运行跨 gdb 并连接到目标以远程调试在其上运行的某些内容。因此,核心转储或 gdbserver 是使用跨 gdb 检查目标上某些内容的两种方法,但单独使用 gdbserver 不会有太大帮助。
如果您的交叉编译器类似于arm-none-linux-gnueabi-gcc,请查看您的开发主机上是否有arm-none-linux-gnueabi-gdb可用的交叉编译器。
| 归档时间: | 
 | 
| 查看次数: | 472 次 | 
| 最近记录: |