c++ Qt Creator调试器未显示返回值

7gs2gvoe  于 2023-10-20  发布在  其他
关注(0)|答案(3)|浏览(145)

我的环境:

  • Windows 10,64位
  • Microsoft Visual Studio 2015 Update 3
  • Qt 5.6.2
  • Qt Creator 4.8.1

根据Qt Creator文档,Qt Creator的调试器应该可以在退出函数时显示函数返回的值。摘自http://doc.qt.io/qtcreator/creator-debug-mode.html#local-variables-and-function-parameters:

  • 局部变量视图由局部变量窗格和返回值窗格(为空时隐藏)组成。*
  • 每当程序在调试器的控制下停止时,它都会检索有关最顶层堆栈帧的信息,并将其显示在Locals视图中。Locals窗格显示有关该框架中函数的参数以及局部变量的信息。如果调试器中的最后一个操作是在按Shift+F11后从函数返回,则“返回值”窗格将显示该函数返回的值。*

问题是,我看不到返回窗格(以及最后一个函数返回的值)。
下面是一个简单的例子:
编译完一个最小项目后,我在main()中设置了一个断点,当foo()即将被调用时,我启动了调试器(F5)。调试器在断点处正确停止:

我将给予命令 Step Into(F11)给调试器。在调试器中,我可以看到控制到达了被调用的函数foo()

现在是关键的一步。我向调试器发出给予命令 Step Out(Shift+F11)。正如预期的那样,控制权返回给调用者(main()),但是foo()返回的值没有显示:

如何查看返回值?
下面是我的 Compile Output 窗格的内容:

15:45:44: Running steps for project debugger_return_pane...
15:45:44: Starting: "C:\Qt\5.6.2\msvc2015_64\bin\qmake.exe" C:\experiments\debugger_return_pane\debugger_return_pane.pro -spec win32-msvc2015 "CONFIG+=debug" "CONFIG+=qml_debug"
15:45:44: The process "C:\Qt\5.6.2\msvc2015_64\bin\qmake.exe" exited normally.
15:45:44: Starting: "C:\Qt\Tools\QtCreator\bin\jom.exe" -f C:/experiments/build-debugger_return_pane-Desktop_Qt_5_6_3_MSVC2015_64bit2-Debug/Makefile qmake_all

jom 1.1.2 - empower your cores

15:45:45: The process "C:\Qt\Tools\QtCreator\bin\jom.exe" exited normally.
15:45:45: Starting: "C:\Qt\Tools\QtCreator\bin\jom.exe" 
    C:\Qt\Tools\QtCreator\bin\jom.exe -f Makefile.Debug
    cl -c -nologo -Zc:wchar_t -FS -Zc:strictStrings -Zc:throwingNew -Zi -MDd -GR -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc /Fddebug\DebuggerReturnPane.vc.pdb -DUNICODE -DWIN32 -DWIN64 -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I..\debugger_return_pane -I. -I..\..\Qt\5.6.2\msvc2015_64\include -I..\..\Qt\5.6.2\msvc2015_64\include\QtWidgets -I..\..\Qt\5.6.2\msvc2015_64\include\QtGui -I..\..\Qt\5.6.2\msvc2015_64\include\QtANGLE -I..\..\Qt\5.6.2\msvc2015_64\include\QtCore -Idebug -I..\..\Qt\5.6.2\msvc2015_64\mkspecs\win32-msvc2015 -Fodebug\ @C:\Users\dave\AppData\Local\Temp\main.obj.8348.0.jom
main.cpp
    link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:debug\DebuggerReturnPane.exe @C:\Users\dave\AppData\Local\Temp\DebuggerReturnPane.exe.8348.78.jom
15:45:45: The process "C:\Qt\Tools\QtCreator\bin\jom.exe" exited normally.
15:45:45: Elapsed time: 00:01.
ogsagwnx

ogsagwnx2#

对我来说,调试器停止到第8行后,F10(Step Over),正如您所看到的,返回值显示在右侧面板enter image description here

cyvaqqii

cyvaqqii3#

在文件的顶部,您需要以这种方式包含Qcss:

#include <QDebug>

所以在返回之前,你需要以这种方式打印foo函数返回的值:

qDebug() << value;

相关问题