精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go 調試工具 - Delve 快速入門

開發 開發工具
gdb 只能做到最基本的變量打印,卻理解不了 golang 的一些特殊類型,比如 channel,map,slice 等,gdb 原生是無法調適 goroutine 協程的, 因為這是用戶態的調度單位,gdb 只能理解線程,所以只能通過 python 腳本的擴展,把協程結構按照鏈表輸出.
本文轉載自微信公眾號「洋芋編程」,作者蠻荊 。轉載本文請聯系洋芋編程公眾號。

簡介

Delve? 用來調試 Go? 語言開發的程序,該工具的目標是為 Go 語言提供一個簡單、功能齊全的調試工具。

為什么不推薦 gdb

  • gdb 對 Go 的調試支持是通過一個 python 腳本文件 src/runtime/runtime-gdb.py 擴展的,功能有限
  • gdb 只能做到最基本的變量打印,卻理解不了 golang 的一些特殊類型,比如 channel,map,slice 等,gdb 原生是無法調適 goroutine 協程的, 因為這是用戶態的調度單位,gdb 只能理解線程,所以只能通過 python 腳本的擴展,把協程結構按照鏈表輸出

安裝

$ go install github.com/go-delve/delve/cmd/dlv@latest

# 安裝完成后查看版本
$ dlv verison

Delve Debugger
Version: 1.20.1
Build: $Id: 96e65b6c615845d42e0e31d903f6475b0e4ece6e

常用命令

  •  dlv attach - 調試進程
  • dlv core - 調試 core
  • dlv debug? - 編譯并調試當前目錄的 main 包,也可以通過參數指定其他包
  • dlv exec - 調試二進制文件
  • dlv test - 編譯并調試測試文件

快速開始

我們首先從一個簡單的示例程序開始,改程序打印字符串 hello world, 然后結束并退出。

源文件

// main.go

package main

func main() {
println("hello world")
}

調試源文件

$ dlv debug main.go

# Type 'help' for list of commands.
(dlv)

# 輸入 help 查看參數說明
(dlv) help
The following commands are available:

Running the program:
call ------------------------ Resumes process
...
...
types ---------------------- Print list of types

Type help followed by a command for full documentation.

# 運行程序
(dlv) continue
hello world
Process 3637 has exited with status 0

調試編譯后二進制文件

# 編譯源文件
$ go build -o main main.go

$ dlv exec ./main

Type 'help' for list of commands.
(dlv)

# 接下來的步驟和調試源文件的一樣,這里不再贅述

調試進程

為了讓進程保持在運行狀態,我們在程序中加一行休眠代碼:

package main

import "time"

func main() {
time.Sleep(time.Minute)
println("hello world")
}

調試前先運行程序:

$ go run main.go

# 查看進程 ID
$ ps -ef | grep "go run main.go"

7602 27666 0 21:30 pts/6 00:00:00 go run main.go

# 調試進程
$ dlv attach 7602

Type 'help' for list of commands.
(dlv)

...

# 1 分鐘之后,main.go 并未正常退出,因為當前正在調試
# 輸入 continue 繼續運行

(dlv) continue
Process 7602 has exited with status 0

常用調試命令

下列命令是啟動 dlv? 調試后可用的命令 (也就是當前命令行變為 (dlv) 之后可用)。

運行程序

命令

描述

call

恢復進程,調用函數 (實驗階段)

continue

繼續運行程序,直到遇到斷點或程序結束

next

單步調試

restart

重新運行

step

單步調試某個函數

step-instruction

單步調試某個 CPU 指令

stepout

從當前函數跳出

操作斷點

命令

描述

break

設置斷點

breakpoints

打印所有斷點

clear

刪除斷點

clearall

刪除所有斷點

condition

設置條件斷點

on

設置一個斷點觸發時執行的命令

toggle

打開/關閉 斷點

查看變量或內存

命令

描述

args

打印函數參數

display

每次程序停止時打印表達式的值

examinemem

解析給定地址的內存

locals

打印本地變量

print

解析一個表達式

regs

打印寄存器信息

set

設置變量的值

vars

打印包內變量

whatis

打印類型信息

線程 / goroutine 的展示與切換

命令

描述

goroutine

打印或切換 goroutine

goroutines

打印所有 goroutine

thread

切換到指定的線程

threads

打印所有線程信息

調用堆棧

命令

描述

deferred

在 defer 上下文中執行命令

frame

設置當前幀,或在不同的幀上執行命令

stack

打印堆棧信息

其他命令

命令

描述

config

更改配置參數

disassemble

反匯編

dump

dump core

exit

結束調試,也可以用 ??quit??

綜合示例

最后,我們使用一個的小例子,熟悉下常用的幾個命令。

示例程序代碼如下:

// main.go

package main

var (
x = 1024
)

func main() {
for i := 0; i < 5; i++ {
println(i)
}
}

# 開始調試
$ dlv debug main.go

Type 'help' for list of commands.
(dlv)

# 增加斷點
(dlv) b main.main
Breakpoint 1 set at 0x45f0c6 for main.main() ./main.go:7

# 查看斷點
(dlv) bp
...
Breakpoint 2 (enabled) at 0x45f0c6 for main.main() ./main.go:7 (0)

# 運行程序
(dlv) continue
> main.main() ./main.go:7 (hits goroutine(1):1 total:1) (PC: 0x45f0c6)
2:
3: var (
4: x = 1024
5: )
6:
=> 7: func main() {
8: for i := 0; i < 5; i++ {
9: println(i)
10: }
11: }
12:
# 可以看到,程序停在了設置的斷點上

# 打印包變量
(dlv) vars vars main.x
...
main.x = 1024
...

# 單步調試
(dlv) next
> main.main() ./main.go:8 (PC: 0x45f0d4)
3: var (
4: x = 1024
5: )
6:
7: func main() {
=> 8: x = 0
9: for i := 0; i < 5; i++ {
10: println(i)
11: }
12: }
13:

# 再次單步調試
(dlv) next
> main.main() ./main.go:9 (PC: 0x45f0df)
4: x = 1024
5: )
6:
7: func main() {
8: x = 0
=> 9: for i := 0; i < 5; i++ {
10: println(i)
11: }
12: }
13:
14: //timeout := time.After(time.Minute)

# 可以看到,程序停在了循環語句

# 打印包變量
(dlv) vars main.x
main.x = 0

# 再次單步調試
(dlv) next
> main.main() ./main.go:10 (PC: 0x45f0f4)
5: )
6:
7: func main() {
8: x = 0
9: for i := 0; i < 5; i++ {
=> 10: println(i)
11: }
12: }
13:
14: //timeout := time.After(time.Minute)
15: //


# 打印本地變量
(dlv) locals
i = 0

# 查看堆棧信息
(dlv) stack
0 0x000000000045f0f4 in main.main
at ./main.go:10
1 0x00000000004358b8 in runtime.main
at /usr/local/go/src/runtime/proc.go:250
2 0x000000000045c0c1 in runtime.goexit
at /usr/local/go/src/runtime/asm_amd64.s:1594


# 打印 goroutine 信息
(dlv) goroutine
Thread 27873 at ./main.go:10
Goroutine 1:
...

# 刪除所有斷點
(dlv) clearall
Breakpoint 1 cleared at 0x45f0c6 for main.main() ./main.go:7

# 繼續執行
(dlv) continue
1
2
3
4
Process 27873 has exited with status 0

# 退出調試
(dlv) exit

與 IDE 集成

Delve 支持以插件的形式集成到主流的 IDE 里面,具體的支持列表請看 這個頁面[1]。

常見問題

單點調試總是執行非預期的代碼?

一般是被編譯器優化了,比如內聯會導致 dlv 單步調試無法打印某些變量,解決方法是禁止編譯優化。

# 禁用內聯和優化 (細節可以閱讀引用文章列表)
go run -gcflags "-N -l" main.go

Reference

  • go-delve/delve[2]
  • 高效獲取堆棧調用信息
  • 內聯優化
  • 逃逸分析
  • golang 調試分析的高階技巧
  • 如何定位 golang 進程 hang 死的 bug[3]
  • Debugging with GDB[4]
  • 100-gdb-tips[5]
  • 深入 Go 語言 - 11[6]
  • WSL2 安裝 perf[7]

引用鏈接

[1]? 這個頁面: ??https://github.com/go-delve/delve/blob/master/Documentation/EditorIntegration.md??

[2]? go-delve/delve: ??https://github.com/go-delve/delve??

[3]? 如何定位 golang 進程 hang 死的 bug: ??https://xargin.com/how-to-locate-for-block-in-golang/??

[4]? Debugging with GDB: ??https://sourceware.org/gdb/current/onlinedocs/gdb.html/??

[5]? 100-gdb-tips: ??https://github.com/hellogcc/100-gdb-tips??

[6]? 深入 Go 語言 - 11: ??https://colobu.com/2016/07/04/dive-into-go-11/??

[7]? WSL2 安裝 perf: https://gist.github.com/abel0b/b1881e41b9e1c4b16d84e5e083c38a13

責任編輯:武曉燕 來源: 洋芋編程
相關推薦

2022-05-23 09:22:20

Go語言調試器Delve

2020-07-10 16:52:43

DelveGo程序開源

2021-07-26 10:14:38

Go語言工具

2020-06-15 08:39:41

調試工具

2022-08-28 10:36:53

調試工具通用

2015-08-14 09:21:09

gdb工具調試 Go

2011-08-15 17:38:48

iPhone開發調試工具

2024-07-09 08:31:26

2024-01-24 13:22:40

Python調試工具技巧

2016-12-02 20:23:51

AndroidADB

2025-03-31 03:25:00

2012-02-24 09:25:20

JavaScript

2025-07-03 02:00:00

2022-08-21 14:05:54

調試工具CDP

2024-02-23 10:00:27

Linux工具

2019-04-30 15:10:42

Python調試工具編程語言

2010-06-02 15:37:38

Linux 網絡性能

2010-06-02 15:21:29

Linux 網絡性能

2018-11-27 11:35:32

systemtapMySQL調試工具

2020-05-21 15:53:59

遠程調試工具
點贊
收藏

51CTO技術棧公眾號

av网站导航在线观看免费| 日本妇女毛茸茸| 四虎影视4hu4虎成人| 欧美激情自拍偷拍| 91文字幕巨乱亚洲香蕉| 久草精品视频在线观看| 国产亚洲精品美女久久久久久久久久| 粉嫩av一区二区| 久久精品视频免费观看| 国产日本欧美在线观看| 免费在线一级片| 精品久久久久中文字幕小说| 日韩一区二区三区高清免费看看| 国产av天堂无码一区二区三区| 国产女人在线观看| 国产91精品在线观看| 国产精品第3页| 精品人妻在线播放| 色天天久久综合婷婷女18| 日韩欧美成人一区| 向日葵污视频在线观看| caoporn-草棚在线视频最| 国产欧美1区2区3区| aa成人免费视频| 中文字幕+乱码+中文乱码www| 欧美视频网站| 日韩在线中文字| 亚洲国产果冻传媒av在线观看| 日韩三级成人| 在线观看欧美黄色| 国产一区二区在线视频播放| 动漫一区在线| 国产精品视频麻豆| 蜜桃视频在线观看成人| 秋霞网一区二区| 九九热这里有精品| 在线成人av| 神马久久久久久| 受虐m奴xxx在线观看| 国产精品久久久久av蜜臀| 欧美伦理视频网站| 亚洲欧美激情网| 在线看片国产福利你懂的| 亚洲一区二区三区在线看| 亚洲一区二区三区免费看| 欧洲亚洲精品视频| 99精品国产视频| 国产欧美一区二区三区另类精品| 精品久久久久中文慕人妻| 麻豆精品视频在线观看免费| 国产成人精品a视频一区www| 九九精品免费视频| 午夜一区不卡| 热久久99这里有精品| 日韩av女优在线观看| 国产在线不卡| 欧美激情精品久久久久久免费印度 | 日本不卡高清视频| 国产精品吊钟奶在线| 波多野结衣电影在线播放| 美女黄色成人网| 国产成人精品视频在线| 手机av免费观看| 日韩高清不卡一区二区三区| 日本三级久久久| 成年人视频免费| 蜜臀av一区二区在线观看| 国产精品视频网址| 97在线视频人妻无码| 激情综合五月天| 91丨九色丨国产| 日韩在线观看视频一区二区三区| av中文字幕一区| 久久综合狠狠综合久久综青草 | 一区免费在线| 亚洲人av在线影院| 妺妺窝人体色WWW精品| 国产午夜一区| 久久精品一偷一偷国产| 欧美日韩综合一区二区| 亚洲国产网站| 国产成人黄色av| 国产孕妇孕交大片孕| 国产成人一级电影| 久久riav二区三区| 香蕉视频免费在线播放| 亚洲欧美欧美一区二区三区| 日韩 欧美 视频| 成人香蕉视频| 欧美妇女性影城| 91视频在线免费| 欧美天天综合| 久久久免费精品视频| 亚洲影院在线播放| 国内精品第一页| 久久久av水蜜桃| 日本精品一区二区三区在线播放| 亚洲一区在线观看免费| 欧美精品无码一区二区三区| 精品久久国产一区| 国产午夜精品久久久| 五月综合色婷婷| 国产精品视频| 97se视频在线观看| 国产片在线观看| 亚洲不卡在线观看| 色91精品久久久久久久久| 久久中文资源| 蜜臀久久99精品久久久无需会员| 欧美精品韩国精品| 国产成人aaaa| 五月天色一区| 国产美女高潮在线| 欧美一区二区女人| 一区二区三区久久久久| 极品av少妇一区二区| 国产精品中文字幕在线| 头脑特工队2在线播放| 亚洲视频网在线直播| 欧美成人xxxxx| 国产福利资源一区| 精品国内产的精品视频在线观看| 国产一级做a爱片久久毛片a| 国产一区在线看| 亚洲一区二区免费视频软件合集| 在线看片福利| 欧美精品一区二区三区高清aⅴ| 老司机精品免费视频| 先锋影音久久久| 高清不卡一区二区三区| 国产成人l区| 欧美日韩在线一区二区| 久久只有这里有精品| 在线成人欧美| 粉嫩av一区二区三区粉嫩| 亚洲最大的免费| 日本天堂在线观看| 欧美性猛交xxxx黑人交| 一本加勒比波多野结衣| 欧美日韩第一区| 亚洲va电影大全| 日本欧美在线视频免费观看| 欧美性生活大片视频| 精品少妇一区二区三区免费观| 尹人成人综合网| 国产精品二区三区四区| 免费的黄网站在线观看| 欧美日韩大陆一区二区| 无码人妻丰满熟妇啪啪欧美| 天堂在线亚洲视频| 秋霞在线观看一区二区三区| 不卡一二三区| 亚洲欧美日韩一区二区在线| 在线观看 亚洲| 久久综合一区二区| 97成人在线观看视频| 欧洲亚洲一区二区三区| 欧美一区二区三区免费视| 天堂网在线中文| 精品久久久精品| 亚洲最大的黄色网| 鲁大师影院一区二区三区| 欧美国产综合视频| 中文字幕系列一区| 爽爽爽爽爽爽爽成人免费观看| 一区二区视频播放| 日韩美女视频一区二区 | 尤物99国产成人精品视频| 波多野结衣大片| 日韩一区中文字幕| 手机在线播放av| 亚洲精品一二| 欧美自拍资源在线| 日本国产一区| 色综合男人天堂| 日本一区高清| 欧美私模裸体表演在线观看| 欧美一级特黄高清视频| 国产98色在线|日韩| 精品99在线视频| 久久中文字幕av| 国产精品一区二区欧美黑人喷潮水 | 无码人妻精品一区二区三区在线| 国产精品午夜一区二区三区| 成人国产亚洲精品a区天堂华泰| 18+激情视频在线| 日韩国产精品一区| 亚洲专区在线播放| 亚洲成av人片一区二区梦乃| 人与嘼交av免费| 国产成人午夜片在线观看高清观看| 波多野结衣乳巨码无在线| 欧洲杯半决赛直播| 国产91亚洲精品一区二区三区| 日本综合字幕| 色综合久综合久久综合久鬼88| 激情小视频在线观看| 日韩欧美www| 中文字幕 人妻熟女| 夜夜精品浪潮av一区二区三区| 欧美狂猛xxxxx乱大交3| 国产一区二区三区四| 青青青在线播放| 韩国在线一区| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲经典视频| 国产精品免费一区| 国模私拍一区二区国模曼安| 精品国内自产拍在线观看| 你懂的视频在线观看| 日韩欧美国产综合| 亚洲综合精品视频| 欧美性20hd另类| 免费一级肉体全黄毛片| 国产精品私人自拍| 法国伦理少妇愉情| 国产99精品在线观看| 亚洲激情在线看| 日韩精品色哟哟| 亚欧无线一线二线三线区别| 中文不卡在线| 亚洲视频电影| 国产一区不卡| 久久综合毛片| 久久精品论坛| 国产精品18毛片一区二区| 亚瑟国产精品| 国产裸体写真av一区二区| 日本欧美日韩| 日本午夜在线亚洲.国产| caoprom在线| 欧美日本中文字幕| 中文字幕资源网在线观看| 色偷偷偷综合中文字幕;dd| 青青青草网站免费视频在线观看| 精品成人a区在线观看| 99在线精品视频免费观看20| 欧美精品在线观看播放| 少妇一级淫片日本| 色8久久精品久久久久久蜜| 狠狠躁夜夜躁人人爽天天高潮| 亚洲一区二区在线视频| 欧美成人片在线观看| 亚洲欧美日韩中文字幕一区二区三区 | 欧美激情视频给我| 秋霞在线午夜| 欧美激情视频免费观看| 丰满大乳少妇在线观看网站| 欧美激情乱人伦| av在线中出| 午夜精品一区二区三区在线视| 久久不射影院| 久久久久久亚洲精品不卡| 久草在线视频资源| 久久久亚洲精选| 99爱在线观看| 国产97在线视频| 久久天天久久| 91视频免费在线| 成人激情自拍| 久久国产日韩欧美| 久久99精品久久久久久园产越南| 日本视频精品一区| 欧美丰满日韩| 9191国产视频| 99热这里只有精品8| 男人的天堂99| 蜜臀va亚洲va欧美va天堂 | 91丨精品丨国产| 动漫一区二区在线| 久久久亚洲欧洲日产| 欧美日韩免费高清| 日韩激情在线| 91大学生片黄在线观看| 亚洲欧洲一区| 99久久国产宗和精品1上映| 日本免费在线视频不卡一不卡二 | 成人av网站免费观看| 国产精品一区二区入口九绯色| 久久精品夜色噜噜亚洲aⅴ| 成年人免费视频播放| 一区二区三区四区乱视频| 亚洲免费激情视频| 欧美色综合久久| www.国产麻豆| 亚洲欧美制服中文字幕| 黄在线免费看| 97av在线视频| 久久精品国产福利| 好看的日韩精品视频在线| 欧美日韩黑人| 日韩亚洲欧美视频| 蜜芽一区二区三区| 亚洲av人人澡人人爽人人夜夜| 国产视频亚洲色图| 久久婷婷一区二区| 欧美在线一二三四区| 亚洲精品成人区在线观看| 亚洲欧美另类国产| 色图在线观看| 国产精品精品一区二区三区午夜版| 麻豆国产一区二区三区四区| 美女亚洲精品| 欧美午夜影院| 男人天堂网视频| 国产成人精品一区二区三区网站观看| 久久久久亚洲av无码专区桃色| 亚洲久草在线视频| 无码久久精品国产亚洲av影片| 精品三级在线观看| 天堂中文8资源在线8| 38少妇精品导航| 国产一区二区三区免费在线| 日本精品一区二区| 韩国久久久久| 无码人妻一区二区三区在线视频| 国产午夜精品一区二区三区四区| 久久久久性色av无码一区二区| 欧美午夜一区二区三区| 亚州av在线播放| 欧美激情视频网站| 成人在线日韩| 亚洲图色在线| 日韩不卡一二三区| 免费中文字幕av| 亚洲成人免费av| 性一交一乱一色一视频麻豆| 中文字幕欧美日韩va免费视频| 一二三四视频在线中文| 国产另类自拍| 国产精品啊啊啊| 亚洲精品一二三四| 日韩美女精品在线| 中文字幕一区二区在线视频 | av在线天堂| 国产成人精品免高潮费视频| 欧美精品中文| 国产91美女视频| www.色精品| 日韩免费一级片| 亚洲黄色av网站| 爱草tv视频在线观看992| 国产成人精品免费视频大全最热| 欧美国产精品| 无人码人妻一区二区三区免费| 中文字幕一区二区三区色视频| 一区二区三区日| 日韩亚洲欧美成人| 亚洲欧洲一二区| 国产精品夜夜夜爽张柏芝| 麻豆91小视频| 日韩在线一卡二卡| 7777精品伊人久久久大香线蕉完整版 | av在线com| 成人午夜激情片| 亚洲一区欧美在线| 亚洲精品自产拍| 欧美片第1页| 亚洲国产日韩美| 激情国产一区二区| 黄色一级片在线免费观看| 精品国产乱码久久| 九色porny自拍视频在线观看| 久久国产精品精品国产色婷婷| 久久久噜噜噜久久狠狠50岁| 久久丫精品忘忧草西安产品| 欧美性生交片4| 成人在线app| 黑人另类av| 日韩在线一区二区| 国产精品免费在线视频| 欧美一级视频精品观看| 国精一区二区三区| 裸体丰满少妇做受久久99精品| 久久国产精品毛片| 午夜激情福利电影| 精品免费一区二区三区| 天堂中文在线播放| 亚洲免费视频一区| 丁香啪啪综合成人亚洲小说| 中文字幕激情小说| 中文字幕在线观看亚洲| 亚洲精品高潮| 99久久国产宗和精品1上映| 亚洲三级理论片| 五月婷婷狠狠干| 国产综合福利在线| 一区在线免费观看| 欧美成人另类视频| 精品久久久久久综合日本欧美| 中文字幕一区久| 日韩国产精品毛片| 91在线观看地址| 国产乱淫av免费| 秋霞av国产精品一区| 欧美日本一区| 神马久久久久久久久久久| 亚洲成人精品久久| 久久麻豆视频| 凹凸日日摸日日碰夜夜爽1|