go學習(三) gdb除錯

2021-08-04 14:25:16 字數 864 閱讀 6116

前言:

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.常規選項...