在Ubuntu下調試C++代碼,可以使用多種工具和方法。以下是一些常用的技巧和步驟:
安裝GDB: 首先,確保系統已經安裝了GDB。如果沒有安裝,可以使用以下命令進行安裝:
sudo apt update
sudo apt install gdb
編譯程序時包含調試信息:
在編譯C++源代碼時,需要加上 -g
參數來確保生成的可執行文件包含了調試信息。例如:
g++ -g -o my_program my_program.cpp
啟動GDB調試程序: 使用以下命令啟動GDB并加載你的程序:
gdb my_program
設置斷點:
在GDB中,可以使用 break
命令在指定行設置斷點。例如,在 main
函數處設置斷點:
break main
或者在特定函數或行號設置斷點:
break my_program.cpp:42
運行程序:
使用 run
命令啟動程序。如果設置了斷點,程序將在斷點處停止:
run
調試操作:
list
或 l
:顯示源代碼。next
或 n
:執行下一行代碼,但不進入函數內部。step
或 s
:執行下一行代碼,并進入函數內部。continue
或 c
:繼續執行程序直到下一個斷點。print
或 p
:打印變量的值。例如,打印變量 x
的值:print x
backtrace
或 bt
:顯示當前的調用堆棧。frame
或 f
:選擇堆棧幀。例如,選擇堆棧中的第7幀:frame 7
watch
:監視表達式的值。當表達式的值發生更改時,程序將暫停。退出GDB:
使用 quit
命令退出GDB。
安裝必要的軟件和組件:
配置調試環境:
main.cpp
。Ctrl+Shift+P
打開命令面板,輸入 Tasks: Configure Task
,然后選擇 Create tasks.json file from template
。選擇 Others
,這將創建一個 tasks.json
文件,內容如下:{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": [
"-g",
"-O0",
"{file}",
"-std=c++17",
"-o",
"{fileBasenameNoExtension}"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [
"gcc"
]
}
]
}
Ctrl+Shift+D
打開調試視圖,點擊齒輪圖標打開 launch.json
配置文件。選擇 C (GDB/LLDB)
,這將創建一個默認的調試配置。你可以根據需要修改它。添加斷點:
在 main.cpp
文件中,在你想要調試的代碼行左側點擊,設置斷點。
啟動調試:
點擊調試視圖中的綠色三角形按鈕(或按下 F5
鍵)開始調試。程序將在第一個斷點處停止。
使用GDB命令進行調試: 程序停止后,你可以使用GDB的各種命令進行調試,例如:
list
或 l
:顯示源代碼。break
或 b
:設置斷點。run
或 r
:啟動程序。next
或 n
:執行下一行代碼,但不進入函數。step
或 s
:執行下一行代碼,如果是函數調用,則進入函數。continue
或 c
:從當前位置繼續執行程序,直到遇到下一個斷點。finish
:執行完當前函數并返回到調用者。print
或 p
:打印變量的值。backtrace
或 bt
:顯示當前調用堆棧。frame
或 f
:選擇堆棧幀。watch
:監視表達式的值。通過以上步驟,你可以在Ubuntu上使用GDB或Visual Studio Code進行C++程序的調試。