GDB 調試Golang常用命令及方法(備忘)


gdb [options] --args executable-file [inferior-arguments ...]

  • l - 相當於list命令,l 37 顯示37行附近的源碼
  • b 行號,b 37 if i==3
  • b 函數名.函數名
  • i b - 查看全部斷點信息
  • d - 刪除所有斷點
  • d 0 - 刪除第0個斷點
  • display a - 一直顯示a的值
  • undisplay - 去掉所有顯示
  • watch addr - 監控addr內存
  • s - step的意思進入函數進行跟蹤
  • j 37 - 直接跳到37行運行
  • u - 將循環執行完
  • p a - 打印a的值
  • p a=3 - 設置a的值,p (*(mystruct *)addr) 打印一個數據結構,addr為其地址
  • r - 運行程序到斷點
  • n - next的意思繼續執行下一條語句
  • c - continue的意思,繼續執行跳過當前斷點, c 3 忽略3次斷點
  • bt - 查看函數堆棧
  • where - 查看堆棧信息
  • up - 回溯一層堆棧
  • down - 到下一層堆棧
  • shell - 進入shell,如果再exit會回到gdb, shell echo $env
  • enable n - 開啟第n個斷點
  • disable n - 禁用第n個斷點
  • finish - 執行本函數並返回
  • dir - 加目錄

 

關閉GDB時,發現未退出應用程序:

a. 查找被占用的端口
netstat -tln
netstat -tln | grep 8060
netstat -tln 查看端口使用情況,而 netstat -tln | grep 8060 則是只查看端口8060的使用情況
b. 查看端口屬於哪個程序?端口被哪個進程占用
lsof -i:8060

lsof -i:9000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
revel 24739 yourihua 8u IPv6 576421 0t0 TCP *:9000 (LISTEN)

c.殺掉占用端口的進程 根據pid殺掉

kill -9 進程id
kill -9 24739

 

目的:使用gdb附加到一個正在運行的進程上,然后做一些調試,並安全退出。

1. 修改Ubuntu配置,允許gdb附加到進程上,如何修改如下:
http://askubuntu.com/questions/41629/after-upgrade-gdb-wont-attach-to-process

2. 查看進程id #ps ax 或者 #ps au

3. 啟動gdb

4. 使用file命令來指定進程所聯系的程序源代碼和符號表,例如:

file 要附加的源代碼目錄

5. attach <進程ID>

6. 打斷點,如下:

b path/to/app.go:10

7. 輸入c,進程繼續運行。

8. ctrl + c再次中斷,回到gdb命令行,然后輸入:deatch。
當你調試結束之后,可以使用該命令斷開進程與gdb的連接(結束gdb對進程的控制),在這個命令執行之后,你所調試的那個進程將繼續運行。


免責聲明!

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



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