возвращаемое значение не отображается отладчиком Qt Creator - PullRequest
0 голосов
/ 29 января 2019

Моя среда:

  • Windows 10, 64-разрядная
  • Microsoft Visual Studio 2015, обновление 3
  • Qt 5.6.2
  • QtCreator 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).Отладчик правильно останавливается в точке останова:

enter image description here

Я даю команду Step Into (F11) отладчику.В отладчике я вижу, что управление достигает вызываемой функции, foo():

enter image description here

Теперь для критического шага.Я даю команду Step Out (Shift + F11) отладчику.Как и ожидалось, управление возвращается к вызывающей стороне (main()), но значение, возвращаемое foo(), не отображается:

enter image description here

Итак, какможно увидеть возвращаемое значение?

Вот содержимое моей панели компиляции :

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.

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019

У меня работает, после остановки отладчика в строке 8, F10 (Step Over), и, как вы можете видеть, возвращаемое значение отображается на правой панели введите описание изображения здесь

0 голосов
/ 05 февраля 2019

Это было теперь признано ошибкой в ​​Qt Creator: https://bugreports.qt.io/browse/QTCREATORBUG-21913

0 голосов
/ 29 января 2019

В верхней части файла вы должны включить QDebug следующим образом:

include

и поэтому перед возвратом вам нужно напечатать значение, возвращаемое функцией foo в этомпуть:

qDebug () << значение; </p>

...