編譯出含除錯資訊的執行檔
gcc -g -o gcc1 gcc1.c
使用 gdb 除錯
gdb gcc1 (gcc1 為示範用的執行檔名)
設定中斷點
b main # 表示 breakpoint 在 main()
b 10 # 表示 breakpoint 設在第 10 行
列出程式碼
l # list 的第一個字母 L
執行下一行 (單步執行)
n # next
執行到一下個中斷點或結束
c # continue
單步執行, 如果有函數會進入
s # step
印出變數值
p # print
xxgdb 是gdb 的圖形介面版, 用法一樣 :
xxgdb gcc1
gdb, xxgdb 都中文顯示都沒有問題. 但換成 DDD 就不行. 其實 gdb 就很夠用了. 尤其是擅長使用鍵盤的人.
另外還有一個 cgdb , 可以將它視為文字模式gdb 加強版, 在除錯過程中上半部視窗可以同步顯示正在執行的程式碼.
cgdb 的缺點是中文會有亂碼. 使用 gdb 配合 -tui 參數有異曲同工之妙.
gdb -tui gcc1
最後壓軸上場的是 kdbg , 不再多說 看圖 :
以上這些除錯工具只有 Kdbg 安裝完會出現在 Ubuntu 應用程式>軟體開發 選單中, 其它的似乎在選單都找不到, 只好到終端機下自行下指令 gdb, ddd, cgdb, xxgdb 了. 其實, 這些工具的源頭還是gdb, 它們只是前端文字或圖形介面. 簡單一點的用 gdb, 喜歡可同步看source code 選 cgdb, 圖形介面的選 kdbg.
回想起十年前在 SCO UNIX 上寫 C 程式只能用 printf 寫 standard output 或是寫到檔案, 執行完再用 log 檔除錯. 那真是件沒效率的事, 如果能有 gdb 就好了.