登录
首页 >  Golang >  Go问答

使用 Go Delve 调试器 (dlv) 的 "展示" 命令来显示切片或地图中的所有值

来源:stackoverflow

时间:2024-02-14 22:39:22 254浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《使用 Go Delve 调试器 (dlv) 的 "展示" 命令来显示切片或地图中的所有值》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

我正在尝试使用 delve (dlv)“显示”命令来显示切片和贴图的值。 “print”命令显示完整值,但“display”仅显示“[...]”

对比下面的显示和打印输出

(dlv) display
0: gns = []string len: 2, cap: 2, [...]
1: chGnMap = map[string]int [...]
(dlv) p gns
[]string len: 2, cap: 2, ["ecam","site"]
(dlv) p chGnMap
map[string]int [
        "ecam": 2, 
        "site": 2, 
]
(dlv) config -list
aliases                   map[]
substitute-path           []
max-string-len            1024
max-array-values          1024
max-variable-recurse      10
disassemble-flavor        
show-location-expr        false
source-list-line-color    
source-list-arrow-color   ""
source-list-keyword-color ""
source-list-string-color  ""
source-list-number-color  ""
source-list-comment-color ""
source-list-line-count    
debug-info-directories    [/usr/lib/debug/.build-id]
(dlv) exit
# dlv version
Delve Debugger
Version: 1.7.2

正确答案


这并不能完全回答您的问题,但是:

当您添加显示变量 display -a ... 时,您可以引用字典中的键。

请参阅以下步骤:

  1. 使用 display -a 添加带有密钥的地图
  2. 显示该密钥当前不存在
  3. 程序前进时会自动添加密钥
(dlv) args
handler = (*main.ProduceHandler)(0x14000112d10)
wri = net/http.ResponseWriter(*net/http.response) 0x14000193708
req = ("*net/http.Request")(0x14000182000)
(dlv) display -a wri.w.wr.res.handlerHeader["Content-Type"][0]
0: wri.w.wr.res.handlerHeader["Content-Type"][0] = error key not found
(dlv) print %T wri.w.wr.res.handlerHeader
net/http.Header []
(dlv) n
> main.(*ProduceHandler).ServeHTTP() ./api.go:144 (PC: 0x100984480)
   139:     switch req.Method {
   140:     case http.MethodGet:
   141:         if len(req.URL.Query()["code"]) == 0 {
   142:             log.Println("Sending entire produce database")
   143:             wri.Header().Add("Content-Type", "application/json")
=> 144:             wri.WriteHeader(http.StatusOK)
   145:             json.NewEncoder(wri).Encode(handler.DB)
   146:             return
   147:         }
   148:
   149:         c := req.URL.Query()["code"][0]
0: wri.w.wr.res.handlerHeader["Content-Type"][0] = "application/json"

今天关于《使用 Go Delve 调试器 (dlv) 的 "展示" 命令来显示切片或地图中的所有值》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>