如何从Qt应用程序中获取符号?

时间:2018-02-26 11:43:18

标签: qt debugging debug-symbols

我遇到了一个问题,我的Qt应用程序崩溃了这个丑陋的"无效参数传递给C运行时函数。",没有任何更多信息。

我的开发环境就在这里:

  • Windows 7-64
  • Qt 5.10.1
  • 的qmake
  • MinGW 32

几天来,我一直在努力找到问题的根本原因。要做到这一点,我已经阅读了很多关于此消息的帖子,无论是在SO上还是在Web上,以及调试验证的方式。所以我安装了Wingdb来尝试利用我在崩溃时创建的转储,这个转储随机出现,而且我不知道它的来源。

我认为这个调查过程是正确的,但如果我出错了,请以正确的方式引导我。

遇到的困难是关于符号,我不知道如何在编译时(对于我的应用程序)生成Qt dll的哪个位置(即使需要它们)。没有符号,就没有可能访问当地人并希望找到问题。

你能告诉我怎么解决这个问题吗?

提前谢谢。

2 个答案:

答案 0 :(得分:0)

为您的项目运行qmake CONFIG+=debug。这将配置makefile以包含调试信息。

如果你使用QtCreator,你可以开始使用Debug build。 “构建并运行”开关按钮位于左下方面板上,带有类似PC的图标。

答案 1 :(得分:0)

通常,当你进行调试构建时,qmake会为你处理符号部分:

qmake "CONFIG+=debug"
mingw32-make

"CONFIG+=debug"将调试符号添加到您的程序中,并将它与调试Qt库链接,调试Qt库具有调试符号(调试时为Qt5Cored.dll,发布时为Qt5Core.dll)。

但是你可能还有另外一个问题,据我所知,如果你在Windows中生成转储,你通常最终会得到一个转储,它应该由MSVC调试器使用,而不是由gdb使用。此外,mingw / gdb和MSVC不会对调试符号使用相同的格式,因此您无法混合使用2个工具链。

对我来说,最简单的方法是使用Qt Creator,Qt附带的IDE,并使用它在调试模式下启动程序。

相关问题