如果你在MacOS上使用GDB工具載入Golang程式時無法載入,這篇文章可以解決。本文不具體介紹除錯的方法,網上的文章太多了就不贅述了。
cgdb使用的是gdb的核心,方法和原理試用本文。
問題分析
最近接觸Go語言,看了慕課網的這篇文章,裡面介紹的Go函式,有一種JavaScript的風格,把我弄迷糊了。記得剛接觸JavaScript的時候,什麼匿名函式自執行,弄的是暈頭轉性。決定使用偵錯程式對這篇文章中的示例程式碼進行除錯。
找了很多文章介紹GDB除錯Golang程式的文章都不能載入。
Type "apropos word" to search for commands related to "word"...
Reading symbols from gen...(no debugging symbols found)...done.
Loading Go Runtime support.
應該是這些文章的作者都用的Linux作業系統吧,在我這裡不起作用。Go語言的官網文件也沒有提到這個問題。
通過查閱stackoverflow,才找到解決的方法。
解決方法
- 在執行
go build
的時候新增-ldflags=-compressdwarf=false
引數。或,新增以下環境變數export GOFLAGS="-ldflags=-compressdwarf=false"
。
圖片中的12行原始碼版權歸慕課網所有,僅供效果展示,無意侵犯。
其他問題
如果你發生了上面的問題,很有可能可出現了這個問題
During startup program terminated with signal SIGTRAP, Trace/breakpoint trap.
解決方法降級gdb到8.01,如果你使用brew安裝的,可以參考 https://stackoverflow.com/questions/49001329/gdb-doesnt-work-on-macos-high-sierra-10-13-3
brew unlink gdb
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/9ec9fb27a33698fc7636afce5c1c16787e9ce3f3/Formula/gdb.rb
- (可選)
brew pin gdb
防止gdb更新