Linux05 gdb使用的相關命令

2021-09-12 13:58:43 字數 1125 閱讀 3395

linux用gcc 編譯預設生成release版本,release是發行版本,debug是開發版本,debug版本生成的可執行檔案比release版本要大一些,裡面生成了一些debug_*段,可用於除錯,debug_*段是在編譯階段加入的。

編譯:gcc -c  main.c  -g

2、除錯物件:debug 版本的可執行檔案

3、開始除錯  輸入指令 gdb main

4、加斷點:

l顯示main函式所在檔案的原始碼

b 檔名:行數    給指定檔案指定行加斷點。 

b 檔名:函式名  給函式有效的第一行加個斷點

b 行數            給指定行加斷點

b 16 if i==10        條件斷點

d  bpnum         刪除指定斷點

disable  bpnum    將斷點設定為無效

enable   bpnum    將斷點設定為有效

5、執行

r   開始執行

n   執行下一步

s   執行下一條語句

c    執行到下乙個斷點處,直到程式結束或遇到斷點

6、 finish   退出函式,跳出函式

7、顯示

p    變數名  顯示變數的值

p  & 變數名  顯示變數的位址

p  *ptr  指標指向的位址儲存的值

p  arr 顯示陣列所有元素

int *ptr = arr;

p  *ptr@len,len是陣列元素個數,通過指向陣列的指標顯示陣列所有元素

p  struct_val  顯示結構體變數所有成員值

p  struct_val.a  顯示結構體變數中某個成員的值

p   ptr_struct->a  顯示通過指標指向的結構體某個成員變數的值

p   fun(a,b)  將函式測試執行

bt             顯示函式呼叫棧  函式呼叫流程

8、執行緒除錯

在多執行緒啟動之後,輸入info threads    列印出目前執行緒的資訊和編號。

輸入  t  1      切換到執行緒1               

t  2      切換到執行緒2……

9、退出  q

Linux下gdb相關使用方法

目錄 一 進入除錯的方式 二 單執行緒下的gdb 三 多執行緒下的gdb 注1 gdb除錯值core檔案臨時生成,首先使用ulimit c檢視core檔案大小設定,並可用該命令更改大小設定,當為ulimit c unlimited時,core檔案大小沒有限制 注2 設定永久生成core檔案 修改檔案...

Linux下gdb的使用

一 編譯檔案生成可執行檔案 如果想用偵錯程式執行乙個可執行檔案,在用gcc編譯時必須加上 g選項。加上 g選項以後,gcc在編譯是會做以下額外的操作 1.建立符號表,符號表包含了程式中使用的變數名稱的列表。2.關閉所有的優化機制,以便程式執行過程中嚴格按照原來的c 進行。二 ulimit c unl...

linux下gdb的除錯使用

1.gdb除錯的物件是可執行檔案,而不是程式的源 因此在使用gcc編譯器時 需加 g選項。告訴gcc編譯器加入除錯資訊。例如 gcc g test.c o test 2.除錯gdb的格式是 例如 gdb test 3.在啟動gdb後,會顯示一段版權說明,如果要不顯示 加入 q即可 例如 gdb q ...