在Delve中按源文件设置断点

时间:2018-11-23 23:29:10

标签: go delve

如何通过源文件设置断点? 我在tmp.go文件中有以下代码。

package main

func main() {
   a, b := 1, 2
   c := a + b
   println(c)

}

这有效

$ dlv debug ./tmp.go
(dlv) b main.main:1
Breakpoint 1 set at 0x105395d for main.main() ./tmp.go:4

但这失败

$ dlv debug ./tmp.go
(dlv) b ./tmp.go:4
Command failed: Location "./tmp.go:4" not found

编辑: 可行

$ dlv debug ./tmp.go
(dlv) b tmp.go:4
Breakpoint 1 set at 0x105395d for main.main() ./tmp.go:4

任何想法可能对我的环境有何影响?

1 个答案:

答案 0 :(得分:1)

  

任何想法可能对我的环境有何影响?


  

为什么要关闭这个问题?

     

离题,因为...

     

寻求调试帮助的问题(“为什么此代码不起作用?”)必须   包括所需的行为,特定的问题或错误以及   在问题本身中重现它所需的最短代码。   没有明确问题陈述的问题对其他人没有用   读者。参见:How to create a Minimal, Complete, and Verifiable example.

您未提供MCVE,所以我们只能猜测。

我们不知道您的main.go中有什么,所以您如何期望我们知道您的问题所在?


例如,使用MCVE进行猜测,

main.go

package main

func main() {
    a, b := 1, 2
    c := a + b
    println(c)
}

游乐场:https://play.golang.org/p/i2D9uZnFlXn

输出:

$ go run main.go
3
$ dlv debug ./main.go
Type 'help' for list of commands.
(dlv) break main.main:4
Breakpoint 1 set at 0x454bda for main.main() ./main.go:7
(dlv) quit
$ dlv debug ./main.go
Type 'help' for list of commands.
(dlv) break main.go:4
Breakpoint 1 set at 0x454b9d for main.main() ./main.go:4
(dlv) quit
$ 

break main.main:4break main.go:4不是同一件事,分别在./main.go:7./main.go:4。行号是相对于文件,功能等的。