如何在调试而不是汇编时让QtCreator显示“正常”代码?

时间:2016-04-07 04:50:15

标签: c++ qt debugging qt-creator

我在Ubuntu 14.04上使用QtCreator 3.6.1,gcc作为我的主编译器。

我的Qt项目正在调试模式下构建。但是,每当我按F5,尝试通过设置断点来尝试进入代码时,我的代码崩溃(因为代码有问题)但不是在断点处停止,而是显示汇编输出!

这是一个截屏。代码似乎已经崩溃在你看到黄色箭头的地方,但我只是不知道源代码在哪里!!!

enter image description here

事实上,我已经在cout语句中设置了断点,你可以在这里看到。

enter image description here

甚至cout语句都没有执行。在执行main之前,代码似乎崩溃了。我不知道这是QtCReator问题还是别的什么。我添加了-O0-g选项 到了QMAKE_CXXFLAGS选项只是为了确保正在添加调试符号,但是我遇到了这个问题。

编辑: 我的堆栈跟踪看起来像这样

enter image description here

此外我不确定这是否有帮助,但是当我通过程序名前面的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

1 个答案:

答案 0 :(得分:0)

为此,您的应用程序必须链接到调试库。要调查应用程序崩溃的位置,通常不需要这样,因为您可以在函数堆栈中看到所有自己的方法。