前言:
go語言對gdb的版本是至少為gdb7以上,才能比較好的列印任意變數,如果低於這個版本,會出現一些問題。
以下是記錄單步除錯使用的幾個列印變數。
info frame,列印當前棧引數。
info locals列印區域性變數
info args列印引數。
bt顯示當前堆疊
x/3xw &r檢視記憶體
刪除除錯符號:go build -ldflags 「-s -w」 filename.go
-s: 去掉符號資訊。
-w: 去掉dwarf除錯資訊。
關閉內聯優化:go build -gcflags 「-n -l」 filename.go
常用指令:
$ go build -gcflags 「-n -l」 // 編譯,關閉內聯優化。
$ gdb demo // 啟動 gdb 偵錯程式,手工載入 go runtime
(gdb) b main.main // 以 .方式設定斷點。
(gdb) b main.go:17 // 以 :方式設定斷點。
(gdb) info breakpoints // 檢視所有斷點。
(gdb) r // 啟動程序,觸發第乙個斷點。
(gdb) info locals // 檢視區域性變數。
(gdb) p s // 以 pretty-print 方式檢視變數
(gdb) whatis i // 檢視物件型別。
(gdb) n // 從 breakpoint() 中出來,執行原始碼下一行**。
(gdb) c // 繼續執行,程序結束。
(gdb) q // 退出 gdb。
gdb除錯go程式
golang對gdb有很好的支援。首先要對go程式進行編譯,例如main.go,可以使用指令 go build gcflags n l main.go 之後會生成乙個名字為main的二進位制可執行檔案。然後可以使用gdb main指令,進入除錯模式。如果該程式需要載入一些具有特殊許可權的檔案,可以使...
gdb除錯學習
一般來說,gdb主要幫忙你完成下面四個方面的功能 1 啟動你的程式,可以按照你的自定義的要求隨心所欲的執行程式。2 可讓被除錯的程式在你所指定的調置的斷點處停住。斷點可以是條件表示式 3 當程式被停住時,可以檢查此時你的程式中所發生的事。4 動態的改變你程式的執行環境。除錯的程式如下 root lo...
gdb除錯學習
gdb是乙個由gnu開源組織發布的,unix linux作業系統下的,基於命令列,功能強大的程式除錯工具。可以用來除錯c,c 程式。在今天驗收實驗時發生特別尷尬的事情,由於在編譯.c檔案的時候沒有加 g選項,所以一直無法用gdb除錯程式,所以在總結gdb之前先來看看gcc在編譯時的引數。a.常規選項...