QT远程调试。走进共享图书馆

QT远程调试。走进共享图书馆,qt,debugging,gdb,shared-libraries,cross-compiling,Qt,Debugging,Gdb,Shared Libraries,Cross Compiling,我已经使用qtcreator交叉编译了qt。调试工作正常,但当我尝试介入(F11)外部共享库(我的)中定义的函数时,我看到gdb挂起,最终失败,出现以下错误: 115^错误,msg=“Reply包含无效的十六进制数字116”令牌115的COOKIE已被吃掉(低于StopOK)。一个命令有两个响应可执行文件失败:回复包含无效的十六进制数字116 有什么想法吗?可能是: 与通信协议无关的通用gdb错误 gdb通信协议实现中的gdb错误 gdb通信协议实现中的Qt Creator错误 因为它在任何情况

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

115^错误,msg=“Reply包含无效的十六进制数字116”
令牌115的COOKIE已被吃掉(低于StopOK)。一个命令有两个响应
可执行文件失败:回复包含无效的十六进制数字116

有什么想法吗?

可能是:

  • 与通信协议无关的通用gdb错误

  • gdb通信协议实现中的gdb错误

  • gdb通信协议实现中的Qt Creator错误

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


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

    GDB响应GDBserver消息生成“error,msg=”。Qt创建者与GDB的沟通不涉及。这是GDB和GDBserver之间的错误通信

    这是一个合适的GDBserver,并且是该目标体系结构的GDB吗


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

    我发现问题与使用“step in”(F11)函数有关

    令人费解的是,为了调试库,您可以通过切换库中的断点并简单地使用播放函数(F5)来避免此消息

    谢谢你的回复。在关注真正的问题之前,我做了很多测试