1.直接啟動
gdb
gdb test.out
gdb test.out core 異常崩潰時產生的core
2.動態連接
gdb test.out pid(進程)
動態的跟蹤pid進程的行為
3.GDB應用示例一
gdb //啟動
(gdb) file test.out //載入目標程序
(gdb) set args arg1 arg2 //設置命令行參數
(gdb) run //執行目標程序
還有一個start命令,start在啟動程序后,會立即停止。
gdb
(gdb) file test.out
上面兩條語句等價於:gdb test.out
4.GDB應用示例二:動態的跟蹤、監視某個進程的執行
gdb //啟動
(gdb) attach pid //鏈接到目標進程,鏈接成功后,目標進程將停止執行。
(gdb) continue //恢復執行
gdb
(gdb) attach pid
上面兩條語句等價於gdb test.out pid
如何動態的鏈接到一個已經運行的進程上:
將test.out先運行起來
在另一個終端獲得進程的pid
然后執行:gdb
(gdb) attach pid
5.GDB使用初探
gcc -g test.c func.c -o test.out
ulimit -c unlimited (讓程序在崩潰時產生core文件)
gdb test.out core
定位到func.c文件的第7行出現了問題
*g_pointer = (int )"D.T.Software";
想把g_pointer所指的地址處寫一個整型值,然而g_pointer指向0地址處(為什么?因為定義了int* g_pointer ,它是全局變量,沒有進行初始化,默認為0)