如何通过源文件设置断点? 我在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
任何想法可能对我的环境有何影响?
答案 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:4
和break main.go:4
不是同一件事,分别在./main.go:7
和./main.go:4
。行号是相对于文件,功能等的。