QT远程调试。踏入共享库

时间:2014-08-07 15:08:48

标签: qt debugging gdb shared-libraries cross-compiling

我使用qtcreator交叉编译了qt。调试工作正常,但是当我尝试介入(F11)在外部共享库(我的)中定义的函数时,我看到gdb挂起并最终失败并出现以下错误:

  

115 ^错误,msg ="回复包含无效的十六进制数字116"
烹饪请求115已经吃完(InferiorStopOk)。一个命令的两个响应?
可执行文件失败:回复包含无效的十六进制数字116

任何想法?

3 个答案:

答案 0 :(得分:0)

可能是:

  1. 与通信协议无关的一般gdb错误

  2. gdb通信协议实现中的gdb错误

  3. gdb通信协议实现中的Qt Creator错误。

  4. 因为在任何情况下它都是一个错误,所以您需要在获得好的信息后才能输入错误报告。检查Qt Creator的调试器日志,看看它究竟发生的时间。然后,您可以尝试从gdb的命令行手动重现相同的命令流。如果你成功了,那么#1不太可能。您可以使用另一个IDE(比如Eclipse)来区分#2和#3,但请记住,其他IDE不太可能发出Qt Creator会发出的相同命令。

    调试它的唯一可靠方法是在Qt Creator和gdb之间插入一个小程序,转储Qt creator发送的命令,然后在没有Qt Creator的情况下重放它们。然后,您需要解析响应并确定它们是否有效。如果它们是,那么#1和#2都不成立,它很可能是Qt Creator的错误,#3。

答案 1 :(得分:0)

'error,msg ='由GDB响应GDBserver消息生成。 Qt Creator与GDB的沟通不涉及。所以这是GDB和GDBserver之间的错误沟通。

这是一个合适的GDB服务器,还是该目标架构的GDB?

顺便说一句,人们不需要程序拦截Qt Creator发送给GDB的内容,它都列在调试器日志的左侧窗格中。

答案 2 :(得分:0)

我发现问题与使用“步入”(F11)功能有关。

令人费解的是,您可以避免此消息在库中切换断点并仅使用播放功能(F5)来调试库。

非常感谢您的回复。在集中解决实际问题之前,我做了很多测试。

相关问题