我遇到了一个问题,我的Qt应用程序崩溃了这个丑陋的"无效参数传递给C运行时函数。",没有任何更多信息。
我的开发环境就在这里:
几天来,我一直在努力找到问题的根本原因。要做到这一点,我已经阅读了很多关于此消息的帖子,无论是在SO上还是在Web上,以及调试验证的方式。所以我安装了Wingdb来尝试利用我在崩溃时创建的转储,这个转储随机出现,而且我不知道它的来源。
我认为这个调查过程是正确的,但如果我出错了,请以正确的方式引导我。
遇到的困难是关于符号,我不知道如何在编译时(对于我的应用程序)生成Qt dll的哪个位置(即使需要它们)。没有符号,就没有可能访问当地人并希望找到问题。
你能告诉我怎么解决这个问题吗?
提前谢谢。
答案 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,并使用它在调试模式下启动程序。