GDB用法學習筆記
基本用法:gdb是一個調試器,用于調試程序。通過以下命令啟動gdb:
gdb <可執(zhí)行文件>
普通用法:gdb提供了一系列常用的調試命令,如設置斷點、單步執(zhí)行等。例如,設置斷點并運行程序:
break <行號>
run
高級用戶:高級用戶可以使用gdb的更多功能,如條件斷點、查看內存等。例如,設置條件斷點:
break <函數(shù)名> if <條件>
隱藏用法:gdb還提供了一些不太常見但功能強大的調試技巧。例如,打印堆棧回溯信息:
bt
不常用用法:gdb還具有一些較少使用的功能,如動態(tài)修改變量值、執(zhí)行外部命令等。例如,動態(tài)修改變量的值:
set var <變量名> = <新值>

基本用法:啟動GDB調試器并附加到正在運行的進程 普通用法:設置斷點、單步執(zhí)行、打印變量的值 高級用戶:使用調試器腳本、動態(tài)調試、內存分析 隱藏用法:調試共享庫、遠程調試 不常用用法:調試嵌入式系統(tǒng)、反匯編、操作內核空間
舉例:
基本用法:
gdb ./my_program
普通用法:
break main
(設置斷點)、step
(單步執(zhí)行)、print variable
(打印變量的值)高級用戶:編寫GDB腳本來自動化調試過程、使用GDB的反匯編功能分析代碼、使用GDB的內存分析功能檢測內存錯誤
隱藏用法:調試一個正在運行的程序而不需要源代碼、通過GDB服務器進行遠程調試
不常用用法:調試嵌入式系統(tǒng)中的裸機程序、使用GDB的反匯編功能來分析程序的匯編指令、調試內核模塊的代碼

基本用法: 運行gdb并加載可執(zhí)行文件 普通用法: 設置斷點、單步調試、查看變量值 高級用戶: 自定義命令、腳本化調試任務 隱藏用法: 修改程序狀態(tài)、內存操作、反匯編 不常用用法: 追蹤系統(tǒng)調用、遠程調試、硬件調試
舉例:
基本用法:
gdb ./my_program
普通用法:
break main
(設置在main函數(shù)處斷點)高級用戶:
define mycommand
(定義一個名為mycommand的自定義命令)隱藏用法:
set $eax = 10
(修改寄存器eax的值為10)不常用用法:
catch syscall open
(追蹤程序中的open系統(tǒng)調用)

基本用法: gdb的基本用法是調試程序,可以使用以下命令:
gdb <可執(zhí)行文件>
:啟動gdb并加載可執(zhí)行文件進行調試。
普通用法: gdb的普通用法包括設置斷點、執(zhí)行程序、查看變量值等操作,例如:
break <行號>
:在指定行號設置斷點。run
:運行程序。print <變量名>
:打印變量的值。
高級用戶: gdb的高級用法適用于需要深入調試的情況,例如:
backtrace
:打印函數(shù)調用棧。watch <表達式>
:設置監(jiān)視點,當表達式的值發(fā)生變化時暫停程序執(zhí)行。
隱藏用法: gdb的隱藏用法通常是一些高級調試技巧,例如:
set logging file <文件名>
:將gdb的輸出記錄到指定文件。record
:以記錄模式運行程序,可以回放程序執(zhí)行過程。
不常用用法: gdb的不常用用法包括一些特殊的調試功能,例如:
disassemble
:反匯編當前函數(shù)。set pagination off
:關閉分頁功能,顯示長輸出結果。
請注意,上述命令僅為示例,實際使用時可能需要根據具體情況進行調整和組合。建議參考gdb的文檔或使用gdb --help
命令獲取更詳細的信息。

基本用法:gdb是一個調試器,用于調試和分析程序。簡單的基本用法包括啟動程序、設置斷點、運行程序、查看變量值等。
普通用法:gdb的普通用法包括使用命令行參數(shù)、查看堆棧信息、單步執(zhí)行程序、打印變量值等。
高級用戶:高級用戶可以利用gdb進行更深入的調試和分析。例如,使用調試宏、動態(tài)追蹤函數(shù)調用、捕獲異常信息等。
隱藏用法:gdb還提供了一些隱藏的功能,可以進一步優(yōu)化調試體驗。例如,使用條件斷點、設置觀察點、記錄程序執(zhí)行歷史等。
不常用用法:gdb還有一些不太常用但功能強大的特性。例如,遠程調試、編寫Python擴展腳本、自定義命令等。

基本用法:gdb是一個調試器,用于調試程序。常用的基本命令包括:
run
:運行程序。break
:設置斷點。next
:執(zhí)行下一行代碼。print
:打印變量的值。step
:進入函數(shù)內部。
普通用法:gdb提供了一些進階命令,用于更詳細的調試。
backtrace
:打印函數(shù)調用堆棧。watch
:監(jiān)視變量的值變化。finish
:執(zhí)行當前函數(shù)直到返回。info breakpoints
:顯示所有斷點的信息。display
:在每次停止時打印變量的值。
高級用戶:gdb還提供了一些高級功能,用于更復雜的調試場景。
set variable
:設置變量的值。reverse-continue
:在逆向調試中繼續(xù)執(zhí)行。record
:記錄程序執(zhí)行過程以便后續(xù)回放。catch
:捕獲特定的異常。attach
:附加到正在運行的進程進行調試。
隱藏用法:gdb有一些不太為人所知的隱藏功能,如:
tui enable
:啟用文本用戶界面。maintenance
:進行維護操作,如符號表的管理。define
:定義自定義命令。set logging
:將調試會話記錄到文件中。set disassembly-flavor
:設置反匯編格式。
不常用用法:這些命令在實際調試中使用頻率較低。
x
:查看內存中的數(shù)據。advance
:在循環(huán)中向前執(zhí)行多次。rbreak
:根據正則表達式設置臨時斷點。signal
:控制程序的信號處理行為。set remote
:用于遠程調試。
基本用法:調試程序,設置斷點,查看變量值。 普通用法:跟蹤程序執(zhí)行,查看函數(shù)調用棧,修改變量值。 高級用戶:使用觀察點,條件斷點,反匯編調試,內存調試。 隱藏用法:使用Python擴展調試,多線程調試,遠程調試。 不常用用法:硬件調試,嵌入式調試,處理器特定調試功能。

基本用法:啟動GDB調試器。 普通用法:設置斷點、運行程序、查看變量值。 高級用戶:自定義命令、使用GDB腳本。 隱藏用法:調試遠程程序、反匯編、查看內存。 不常用用法:調試多線程程序、跟蹤系統(tǒng)調用、動態(tài)加載符號表。
舉例:
基本用法:
gdb ./my_program
普通用法:
break main
(設置在main
函數(shù)處的斷點)、run
(運行程序)高級用戶:
define mycommand
(自定義命令)或source my_script.gdb
(使用GDB腳本)隱藏用法:
target remote 192.168.0.1:1234
(調試遠程程序)、disassemble
(反匯編當前函數(shù))、x/10x $esp
(查看棧上的內存內容)不常用用法:
thread apply all bt
(打印所有線程的堆棧信息)、catch syscall open
(跟蹤系統(tǒng)調用open的調用情況)、sharedlibrary libexample.so
(動態(tài)加載符號表中的libexample.so庫)


基本用法:在終端中輸入"gdb <可執(zhí)行文件名>"來啟動GDB調試器。
普通用法:使用"break"設置斷點、"run"運行程序、"next"單步執(zhí)行、"print"打印變量值。
高級用戶:使用"watch"設置觀察點、"step"進入函數(shù)、"finish"執(zhí)行完當前函數(shù)、"backtrace"查看調用堆棧。
隱藏用法:使用"set follow-fork-mode"跟蹤fork出的子進程、"set detach-on-fork"在fork時自動分離子進程。
不常用用法:使用"record"和"replay"記錄和回放程序執(zhí)行、"set pagination off"關閉分頁、"set logging file"將輸出保存到文件。