GDB除錯超詳細整理

2021-10-06 13:26:19 字數 2488 閱讀 3497

centos7.5
#yun install gdb

#gdb -v檢查

gdb常用指令

linux下gdb除錯c++**

linux下偵錯程式gdb、makefile的使用

如何用gdb除錯以daemon程序執行的服務

用gdb除錯程式(一)

有一些程式會使用到deamon(),無法直接gdb,只能查到該程序的pid

使用 #gdb -p -pid 進行除錯

接下來介紹下普通除錯和使用deamon的除錯方法。

程式設計設定:1.需要加-g,不能有-s,如g++ -g main.cpp

(1)新建檔案test.cpp

#include int func(int n)

{ int sum=0,i;

for(i=0; i進入終端,準備開始除錯。

g++ -g test.cpp -o test //1.編譯test.cpp

ls //2.檢視是否生成test程式

gdb test //3.進入gdb除錯

l 1 //4.檢視第一行

b 16 //5.設定第乙個斷點,在16行(long result = 0;)

b func //6.設定第二個斷點,在func函式

info b //7.檢視設定的兩個斷點

r //8.執行-(定位到long result = 0;)

n //9.單行執行(定位到17行,for(i=1; i<=100; i++))

b //10.設定第三個斷點,在第22行(printf("result[1-100] = %d /n", result );)

c //11.跳轉到第22行

p result //12.列印result的值

c //13.下乙個斷點,進入func函式

l func //14.檢視下func**

finish //15.停止

q //16.退出gdb

gdb除錯多執行緒

【linux】gdb除錯多執行緒和多程序以及core檔案

//安裝pstree

yum -y install psmisc

//檢視程序下的執行緒數量

pstree -p pid (第一行包含兩個,所以總共是五個)

然後開始gdb除錯

//設定main檔案的斷點

b 行號

b func

//directory /tmp/svn/cloudguard/trunk/cloudnode/ //設定原始碼路徑

//show directory //檢視原始碼路徑

//設定不同檔案的斷點

b cclass::

func()

(可以輸入b cclass,使用tab快捷鍵補齊)

b class

.cpp:

1361

(strparser::localsegment所在行)

//1.檢視程序:info inferiors

//2.檢視執行緒:info threads

//3.檢視執行緒棧結構:bt

//4.切換執行緒:thread n(n代表第幾個執行緒)

//設定不同檔案的斷點

ps -aux | grep test

gdb -p pid

b cclass::

func()

(可以輸入b cclass,使用tab快捷鍵補齊)

b class

.cpp:

1361

(strparser::localsegment所在行)

set scheduler-locking off //設定所有執行緒並行(也可以不設定)

n然後出發到該函式

GDB除錯命令整理

基本功能 列印堆疊 bt backtrace 檢視 根據行號 list xx 檢視xx行 檢視除錯所處範圍 當前偵 frame 斷點新增斷點 根據行號新增 break xx,在xx行新增斷點 break xx,在當前行前面xx行新增斷點 break xx,在當前行後面xx行新增斷點 根據檔名和行號新...

gdb 跟蹤除錯命令整理

內容源自於陳浩csdn部落格的用gdb除錯程式一系列文章 要進行除錯程式首先要生成乙個含有除錯資訊的執行程式命令如下 此時便會生成乙個含有除錯資訊的可執行檔案,然後便可以用 gdb 去除錯這個程式了,進入除錯程式命令,但是如果用 gdb 去除錯乙個未包含除錯資訊的可執行檔案則會發生錯誤 執行 gdb...

有關GDB除錯的整理

使用gdb除錯,要在編譯時使用 g 進入除錯。如果沒有 g,將看不見程式的函式名 變數名,所代替的全是執行時的記憶體位址。預設生成的可執行檔案a.out g test.cpp g gdb a.out 自己定義生成的可執行檔案test g test.cpp o test g gdb test 如果程式...