在MacOS上使用gdb(cgdb)調試Golang程序


如果你在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更新
參考資料:https://stackoverflow.com/questions/52534287/debug-go-program-with-gdb-on-macos https://groups.google.com/forum/#!topic/golang-nuts/LlgN1qpbRE8 https://golang.org/doc/gdb


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM