查看本機是否安裝了gdb:gdb --version函數
若是沒有安裝能夠使用apt-get install gdb安裝gdb測試
(1)調試一個簡單的cpp文件:spa
test.cpp文件:調試
#include<stdio.h>get
int main()io
{編譯
int a = 5;test
int b = 6;變量
int c = a+b;打包
printf("the number is %d\n",c);
}
要調試這個cpp文件,在用g++編譯的時候須要添加一個-g的參數。首先編譯這個文件:g++ -g -o test test.cpp,這樣打包出來的test文件才能夠用gdb調試,若是沒有-g參數,打包出來的文件是不能調試的。
使用gdb調試打包出來的test文件:gdb test
而後機器會等待你輸出命令,輸入b 7,表示在第7行設置一個斷點,這裏你能夠設置多個斷點。而後輸入run,程序會運行到你設置的第一個斷點處停下來。這個時候你能夠用print命令來打印出你想要查看的變量的值,如print(a),在測試這裏會輸出5。
若是要繼續運行,能夠再次使用run,會運行到下一個斷點處停下。使用next,表示代碼往下運行一行,若是是調用函數不會進入函數內部。使用step,也是往下運行一行,若是遇到函數調用則進入到函數的內部。
(2)若是要調試用CMake打包出來的程序,須要要CMakeList.txt文件中添加下面這幾條語句:
SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
(3)編譯的時候可能包含了不少其餘的cpp文件,若是要在gdb調試的時候在其餘的文件中加入斷點的話,使用這樣的格式:b test1.cpp:20(表示將斷點加載引用的test1.cpp文件的第20行)
(4)在調試須要輸入參數的程序的時候,先gdb test,而後set args 參數,而後設斷點......便可