我喜欢能够做非常简单的事情,等待客户端连接到 dlv 调试器,然后再继续代码但没有成功。我有简单的 go 服务器:package mainimport ( "fmt" "net/http")func hello(w http.ResponseWriter, req *http.Request) { fmt.Fprintf(w, "hello\n")}func headers(w http.ResponseWriter, req *http.Request) { for name, headers := range req.Header { for _, h := range headers { fmt.Fprintf(w, "%v: %v\n", name, h) } }}func main() { fmt.Println("server started now!") http.HandleFunc("/hello", hello) http.HandleFunc("/headers", headers) http.ListenAndServe(":8090", nil)}我像这样在 linux 机器上启动服务器:vagrant@vagrant:~/go_dev/very_simple_server_dir$ dlv debug /home/vagrant/go_dev/very_simple_server_dir/very_simple_server.go --headless --listen=:3000 --logAPI server listening at: [::]:30002022-10-31T06:18:47Z warning layer=rpc Listening for remote connections (connections are not authenticated nor encrypted)2022-10-31T06:18:47Z info layer=debugger launching process with args: [/home/vagrant/go_dev/very_simple_server_dir/__debug_bin]2022-10-31T06:18:47Z warning layer=debugger can't find build-id note on binary在 visual studio 代码中,launch.json 如下所示:"version": "0.2.0", "configurations": [ { "name": "Connect to server", "type": "go", "request": "attach", "mode": "remote", "remotePath": "/home/vagrant/go_dev/very_simple_server_dir/", "cwd" : "${workspaceFolder}", "port": 3000, "host": "127.0.0.1", "trace": "verbose", "asRoot": true, } ]它可以很好地连接到远程服务器问题是我喜欢 dlv 调试服务器在执行 go 代码之前等待客户端连接。我希望能够在 func main() 第二行中设置断点我怎样才能做到这一点 ?
1 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
你的第二行main.go
只是注册你的处理函数(hello
在本例中)。这发生在您的应用程序启动之前ListenAndServe()
。
我假设您想在启动后调试您的应用程序。您可能希望在函数的第一行(也是唯一一行)设置断点hello
。
- 1 回答
- 0 关注
- 121 浏览
添加回答
举报
0/150
提交
取消