GDB 除錯程式碼
一、Linux程式gcc編譯步驟:
Gcc編譯過程主要的4個階段:
l 預處理階段,完成宏定義和include檔案展開等工作;(.i)
l 根據編譯引數進行不同程度的最佳化,編譯成彙編程式碼(.s.S)
l 用匯編器把彙編程式碼進一步生成目的碼(.o)
l 用聯結器把生成的目的碼和系統或使用者提供的庫連線起來,生成可執行檔案
格式:
l gcc -E test.c//預處理階段
l Gcc -S test.c//編譯階段
l Gcc -c test.c//彙編階段
l Gcc -o test test.c//連結階段
二、Linux程式gdb除錯步驟:
Gdb的功能:
l 設定斷點
l 監視程式變數的值
l 程式的單步執行
l 顯示、修改變數的值
l 顯示、修改暫存器
l 檢視程式的堆疊情況
l 遠端除錯
Gdb除錯過程:
1、程式經過預處理後,即進入編譯階段,進入編譯階段,首先宣告編譯:
2、格式: gcc-o test test.c -g
3、進入編譯: gdb test
4、顯示需要編譯除錯的源程式:l(list)//list filename
5、設定斷點:b(break)行號
6、檢視設定的斷點:info b
7、執行除錯程式:run
8、跳到下一個斷點:c(continue)
9、單步執行的話使用:n(next)/s(step into)跳到函式體 //區別在與:next執行函式體,而step不執行函式體
10、除錯過程中檢視某個變數的變化:print i (每次都要手動設定)//display i(設定一次一直尾隨,直到用“undisplay 變數標號” 停止)
11、退出當前的除錯使用finish 跳出函式
12、清楚斷點 clear 行號
13、Delete 斷點資訊序號// 刪除所有斷點或設定的要刪除的斷點
14、退出除錯 q
15、b num if i==20 設定斷點的觸發條件
16、condition num i==50 改變斷點的觸發條件
17、GDB中原始碼檢視命令
list /l 行號或函式名 //檢視指定位置程式碼
list <linenum> //顯示程式第linenum行的周圍的源程式
list <function> //顯示函式名為function的函式的源程式
list // 顯示當前行後面的源程式
list <filename:funtion> //顯示哪個檔案中的哪個函式的源程式
eg: list src/fun1.c:fun1
list <filename:linenum> //哪個檔案的哪一行周圍的源程式
eg:list src/fun1.c:1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561984/viewspace-2221185/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GDB程式碼除錯與使用除錯
- gdb除錯多程式除錯
- 用GDB除錯程式除錯
- GDB多程式除錯除錯
- 用GDB除錯程式(六)除錯
- 使用 GDB 除錯多程式程式除錯
- gdb除錯除錯
- 用GDB除錯程式(二) (轉)除錯
- 用GDB除錯程式(四) (轉)除錯
- 用GDB除錯程式(三) (轉)除錯
- 使用GDB除錯Android Native 層程式碼除錯Android
- GDB除錯MySQL除錯MySql
- gdb除錯命令除錯
- GDB除錯指令除錯
- Linux中使用GDB除錯程式Linux除錯
- gdb除錯正在執行的程式除錯
- GDB除錯彙總除錯
- gdb除錯快速上手除錯
- gdb除錯多程序除錯
- gdb除錯總結除錯
- linux下用gdb除錯c程式Linux除錯C程式
- 使用GDB命令列偵錯程式除錯C/C++程式命令列除錯C++
- 在MacOS上使用gdb(cgdb)除錯Golang程式Mac除錯Golang
- Linux GDB 程式除錯工具使用詳解Linux除錯
- 介紹 GDB 除錯 Go除錯Go
- GDB除錯命令詳解除錯
- C語言——gdb除錯C語言除錯
- GDB除錯使用記錄除錯
- Codeblocks和gdb除錯BloC除錯
- linux 下GDB除錯Linux除錯
- gdb高階除錯方法高階除錯
- 使用 gdb 工具除錯 Go除錯Go
- gdb除錯coredump檔案除錯
- gdb高階除錯命令高階除錯
- c/c++ gdb 除錯帶引數的程式C++除錯
- C編譯: 使用gdb除錯編譯除錯
- Linux核心使用gdb除錯Linux除錯
- C 編譯: 使用 gdb 除錯編譯除錯