我喜歡能夠做非常簡單的事情,等待客戶端連接到 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 關注
- 177 瀏覽
添加回答
舉報
0/150
提交
取消
