如何在用qt creator调试时显示qstring的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在用qt creator调试时显示qstring的值相关的知识,希望对你有一定的参考价值。
参考技术A 调试的时候看相应变量的值显示在:局部变量和表达式。窗口。所以你只要在你要看的qstring那下好断点就可以了。本回答被提问者和网友采纳
如何使 QtCreator 在调试而不是汇编时显示“正常”代码?
【中文标题】如何使 QtCreator 在调试而不是汇编时显示“正常”代码?【英文标题】:How to make QtCreator show "normal" code while debugging instead of assembly? 【发布时间】:2016-04-07 04:50:14 【问题描述】:我在 Ubuntu 14.04 上使用 QtCreator 3.6.1,gcc 作为我的主要编译器。
我的 Qt 项目正在调试模式下构建。但是,每当我按 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
【问题讨论】:
您确定它在您的代码中崩溃了吗?如果它在没有可用调试信息的另一个库(例如 libc)中崩溃,则无论您的代码是否具有完整的调试信息,它仍会显示这些帧的程序集。完整的回溯是什么样的? @FrankOsterfeld 我明白了。你能告诉我如何在 QtCreator 中获得完整的回溯吗?我不太确定那是什么。 @FrankOsterfeld 我不知道它是否在 in 我的代码中崩溃。甚至我在第一行代码中放置的cout
语句都没有被执行
它在底部区域中列出,其中有很多 call_init() 。我认为有一个上下文菜单选项可以复制内容。您是否有任何全局变量在初始化时可能会崩溃?
@FrankOsterfeld 好的,请参阅已编辑的问题,我已将堆栈跟踪放在最后。我的代码中没有任何全局变量。但正如你所说,它不会在我的代码中崩溃 in ......而是一些dl-init.c
文件。不确定那个文件是什么。什么是崩溃初始化?
【参考方案1】:
为此,您的应用程序必须链接到调试库。要调查您的应用崩溃的位置,您通常不需要这个,因为您可以在函数堆栈中看到您自己的所有方法。
【讨论】:
以上是关于如何在用qt creator调试时显示qstring的值的主要内容,如果未能解决你的问题,请参考以下文章
QT Creator 无法在 i.Mx6 (buildroot) 上远程运行和调试
如何使 QtCreator 在调试而不是汇编时显示“正常”代码?
让QtCreator在调试时显示字符串 Qt调试助手 QtDebuggingHelper qtc-debugging-helper