讓我們以這個非常簡單的程式為例:
// test.cpp
#include <string>
#include <iostream>
using namespace std;
int main() {
string str = "Hello";
cout << str << endl;
return 0;
}
現在我用 g 編譯器編譯這段代碼:
g -g test.cpp -o test.exe
現在我正在嘗試使用 gdb 進行除錯:
gdb test.exe
在 main 上設定斷點然后到達該行return 0后,我嘗試查看字串 str 中的內容。但我無法在控制臺中列印它。它說<error reading variable>。不僅在 gdb 控制臺中,甚至使用 gdb 的 Visual Studio Code UI 也提供相同的輸出。
這是我的控制臺的螢屏截圖:

我到處搜索這個,我發現的唯一相關問題是
uj5u.com熱心網友回復:
首先使用 gdb 運行您的程式,如下所示:
gdb test.exe
現在在命令列界面中運行命令:
set charset UTF-8
這應該可以暫時解決您的問題。唯一的不便可能是每次使用 GDB 在命令提示符下進行除錯時都需要運行這一行。
我注意到您也在使用 Visual Studio Code。您可以為 VS Code 安裝 C 擴展,然后可以set charset UTF-8在 launch.json setupCommands 陣列中添加命令,如下所示。這樣您就可以更快地除錯您的應用程式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/474285.html
上一篇:為什么所有用于轉儲堆的javautils都不起作用?如何轉儲堆?
下一篇:GDB在函式偏移處設定斷點
