我在 Ubuntu 14.04 上使用 QtCreator 3.6.1,gcc 作为我的主要编译器。
我的 Qt 项目正在 Debug模式下构建。但是,每当我按 F5 键,试图通过设置断点进入代码时,我的代码就会崩溃(因为代码有错误)但它不会在断点处停止,而是显示汇编输出!
这是一个屏幕截图。代码似乎在你看到黄色箭头的地方崩溃了,但我只是不知道它在源代码中的什么地方!!!
事实上,我已将断点设置在 cout 语句处,如您所见。
甚至 cout
语句都没有执行。代码似乎在执行 main 之前崩溃了。我不知道这是 QtCReator 的问题还是别的什么。我添加了 -O0
和 -g
选项
到 QMAKE_CXXFLAGS 选项只是为了确定,正在添加调试符号,但我遇到了这个问题。
编辑: 我的堆栈跟踪看起来像这样
我也不确定这是否有帮助,但是当我在程序名称前面加上 LD_DEBUG
通过终端运行程序时,我得到了大量的输出。
最后三行是
.
.
.
7934: symbol=_ZN11QMetaObject8addGuardEPP7QObject; lookup in file=/usr/lib/x86_64-linux-gnu/libQtGui.so.4 [0]
7934: symbol=_ZN11QMetaObject8addGuardEPP7QObject; lookup in file=/usr/lib/x86_64-linux-gnu/libQtCore.so.4 [0]
7934: binding file /usr/lib/x86_64-linux-gnu/libQtGui.so.4 [0] to /usr/lib/x86_64-linux-gnu/libQtCore.so.4 [0]: normal symbol `_ZN11QMetaObject8addGuardEPP7QObject'
[1] 7934 segmentation fault (core dumped) LD_DEBUG=all ./CGALQT_Fix_MainWindow
最佳答案
为此,您的应用程序必须链接到调试库。要调查您的应用崩溃的位置,您通常不需要这样做,因为您可以在函数堆栈中看到您自己的所有方法。
关于c++ - 如何让 QtCreator 在调试而不是汇编时显示 "normal"代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36466953/