J'ai besoin d'aide pour le débogage à distance dans Gogland avec Delve.Débogage à distance Arrêt Gogland
J'essaie de déboguer mon application sur le serveur distant avec IDE Goglang (1.0 EAP) et lien dlv: https://github.com/derekparker/delve/
Installer et essayer simple programme de débogage à distance:
package main
import "fmt"
func main() {
fmt.Println("hello world")
for i:=uint(0); i< 10; i++{
fmt.Println(i)
}
}
Tout d'abord, commencer dlv sur la télécommande hôte (sortie de la console):
$ dlv debug --headless --listen=:2345 --log --api-version=2
API server listening at: [::]:2345
Ensuite, démarrez le débogage à distance dans IDE:
à partir de la console hôte à distance:
2017/07/20 17:23:24 debugger.go:504: continuing
2017/07/20 17:23:24 debugger.go:493: halting
2017/07/20 17:23:24 debugger.go:347: created breakpoint: &api.Breakpoint{ID:1, Name:"", Addr:0x47bb52, File:"/....../hello/hello.go", Line:6, FunctionName:"main.main", Cond:"", Tracepoint:false, Goroutine:false, Stacktrace:0, Variables:[]string(nil), LoadArgs:(*api.LoadConfig)(nil), LoadLocals:(*api.LoadConfig)(nil), HitCount:map[string]uint64{}, TotalHitCount:0x0}
2017/07/20 17:23:24 debugger.go:504: continuing
2017/07/20 17:23:28 debugger.go:516: nexting
hello world
2017/07/20 17:23:28 debugger.go:516: nexting
2017/07/20 17:23:29 debugger.go:516: nexting
0
2017/07/20 17:23:29 debugger.go:516: nexting
02017/07/20 17:23:29 debugger.go:516: nexting
2017/07/20 17:23:29 debugger.go:516: nexting
1
2017/07/20 17:23:29 debugger.go:516: nexting
12017/07/20 17:23:30 debugger.go:516: nexting
2017/07/20 17:23:30 debugger.go:516: nexting
2
2017/07/20 17:23:30 debugger.go:516: nexting
42017/07/20 17:23:30 debugger.go:516: nexting
2017/07/20 17:23:30 debugger.go:516: nexting
3
2017/07/20 17:23:30 debugger.go:516: nexting
92017/07/20 17:23:31 debugger.go:516: nexting
2017/07/20 17:23:31 debugger.go:516: nexting
4
2017/07/20 17:23:31 debugger.go:516: nexting
162017/07/20 17:23:31 debugger.go:516: nexting
2017/07/20 17:23:31 debugger.go:516: nexting
5
2017/07/20 17:23:32 debugger.go:516: nexting
252017/07/20 17:23:32 debugger.go:516: nexting
2017/07/20 17:23:32 debugger.go:516: nexting
6
2017/07/20 17:23:32 debugger.go:516: nexting
362017/07/20 17:23:32 debugger.go:516: nexting
2017/07/20 17:23:32 debugger.go:516: nexting
7
2017/07/20 17:23:33 debugger.go:516: nexting
492017/07/20 17:23:33 debugger.go:516: nexting
2017/07/20 17:23:33 debugger.go:516: nexting
8
2017/07/20 17:23:34 debugger.go:516: nexting
642017/07/20 17:23:34 debugger.go:516: nexting
2017/07/20 17:23:34 debugger.go:516: nexting
9
2017/07/20 17:23:34 debugger.go:516: nexting
812017/07/20 17:23:34 debugger.go:516: nexting
2017/07/20 17:23:35 debugger.go:516: nexting
2017/07/20 17:23:35 debugger.go:516: nexting
Tout fonctionne comme je m'y attendais (point d'arrêt, F7, F8 et etc.)
Puis-je essayer de déboguer Mon APP:
dlv debug --headless --listen=:2345 --log --api-version=2 -- --v --console
2017/07/20 17:26:51 debugger.go:97: launching process with args: [/home/...../debug --v --console]
API server listening at: [::]:2345
IDE commencer
sortie:
2017/07/20 17:26:55 debugger.go:493: halting
2017/07/20 17:26:55 debugger.go:347: created breakpoint: &api.Breakpoint{ID:1, Name:"", Addr:0x687a73, File:"/home/..........go", Line:136, FunctionName:"main.main", Cond:"", Tracepoint:false, Goroutine:false, Stacktrace:0, Variables:[]string(nil), LoadArgs:(*api.LoadConfig)(nil), LoadLocals:(*api.LoadConfig)(nil), HitCount:map[string]uint64{}, TotalHitCount:0x0}
2017/07/20 17:26:55 debugger.go:347: created breakpoint: &api.Breakpoint{ID:2, Name:"", Addr:0x6869b2, File:"/home/..........go", Line:66, FunctionName:"main.main", Cond:"", Tracepoint:false, Goroutine:false, Stacktrace:0, Variables:[]string(nil), LoadArgs:(*api.LoadConfig)(nil), LoadLocals:(*api.LoadConfig)(nil), HitCount:map[string]uint64{}, TotalHitCount:0x0}
2017/07/20 17:26:55 debugger.go:504: continuing
2017/07/20 17:26:55 debugger.go:347: created breakpoint: &api.Breakpoint{ID:3, Name:"", Addr:0x687d33, File:"/home/........go", Line:143, FunctionName:"main.main", Cond:"", Tracepoint:false, Goroutine:false, Stacktrace:0, Variables:[]string(nil), LoadArgs:(*api.LoadConfig)(nil), LoadLocals:(*api.LoadConfig)(nil), HitCount:map[string]uint64{}, TotalHitCount:0x0}
2017/07/20 17:26:55 debugger.go:504: continuing
2017/07/20 17:26:57 debugger.go:516: nexting
Le débogage IDE ne fonctionne pas (raccroche). Si je n'utilise pas d'application, l'application démarre et fonctionne comme d'habitude (RUN).
Je pense que cette ligne est la raison de mon problème:
2017/07/20 17:26:45 debugger.go: 493: arrêt
Pourquoi faut-il se pose ?? Peut-être que j'ai une structure d'utilité compliquée (le paquet principal est divisé en plusieurs fichiers, bien sûr il y a des paquets de plug-ins externes, etc.) ou autre chose?
MAIS est que si vous vous joignez à un serveur distant non par l'IDE, mais à travers la console, puis le débogage fonctionne sur un exemple simple et dans le cas de mon utilité (le plus intéressant!):
dlv connect HOSTNAME:2345
Type 'help' for list of commands.
(dlv) b ********.go:137
Breakpoint 1 set at 0x687a86 for main.main() /home/*************.go:137
(dlv) c
> main.main() /home/***************************.go:137 (hits goroutine(1):1 total:1) (PC: 0x687a86)
(dlv) n
sortie:
$ dlv debug --headless --listen=:2345 --log --api-version=2 -- --v --console
2017/07/20 17:37:37 debugger.go:97: launching process with args: [/home/*****************/debug --v --console]
API server listening at: [::]:2345
2017/07/20 17:38:27 debugger.go:347: created breakpoint: &api.Breakpoint{ID:1, Name:"", Addr:0x687a86, File:"/home/*******************.go", Line:137, FunctionName:"main.main", Cond:"", Tracepoint:false, Goroutine:false, Stacktrace:0, Variables:[]string(nil), LoadArgs:(*api.LoadConfig)(nil), LoadLocals:(*api.LoadConfig)(nil), HitCount:map[string]uint64{}, TotalHitCount:0x0}
2017/07/20 17:38:35 debugger.go:504: continuing
2017/07/20 17:38:39 debugger.go:516: nexting
Ceux. Il y a une suspicion d'erreur dans l'IDE, ou je fais quelque chose de mal :).
J'essaie aussi de déboguer avec dlv exec (déjà build app) et autre commande.
Merci pour le temps accordé à la question, j'espère vraiment de l'aide.
P.S. Je serai également heureux de savoir quoi d'autre vous pouvez utiliser pour le débogage à distance pour l'application GO.
P.P.S. J'ai essayé d'effectuer le débogage à distance dans Atom.io et dans le code VS Dans Atom, travaillez uniquement le débogage de paramètres régionaux avec dlv.
Dans le code VS, le débogueur local fonctionne à travers dlv + débogueur à distance fonctionne, mais les points d'arrêt ne fonctionne pas !!! Ceux. VS Code n'est également pas une option. Configuration code VS (de launch.json)
{
"version": "0.2.0",
"configurations": [
{
"name": "REMOTE",
"type": "go",
"request": "launch",
"mode": "remote",
"remotePath": "{workspaceRoot}",
"port": 2345,
"host": "REMOTE_HOST_NAME",
"program": "${workspaceRoot}", //"${fileDirname}",
"env": {},
"args": ["--v", "--console"],
"showLog": true
}
]
}
Pour Gogland, s'il vous plaît ajouter "# com.goide.dlv.DlvVm" (sans guillemets) à Aide | Paramètres du journal de débogage ... puis essayez et déboguez l'application et ajoutez les journaux ici. Vous pouvez trouver les journaux via Aide | Afficher les journaux ... et voir idea.log. Alternativement, vous pouvez ouvrir le problème sur le tracker: https://youtrack.jetbrains.com/issues/Go et télécharger le journal là – dlsniper
@dlsniper, fichier LOG de l'IDE: http: //s000.tinyupload.com/? File_id = 03959827677220728410 – Arseny
Pour autant que je peux dire, plonger existe juste le processus et c'est tout. Courez-vous le dernier Go (1.8.3)? Quel est l'hôte du processus débogué? Comment construisez-vous/démarrez-vous l'application déboguée? Je ne peux pas comprendre si l'application simple fonctionne ou non? Si c'est le cas et si ce n'est pas le cas, pouvez-vous publier les logs FULL de l'EDI? Si l'application actuelle ne fonctionne pas, il y a probablement une autre raison à cela, mais sans un moyen de la reproduire dans un échantillon, je ne peux pas faire grand chose à ce sujet. Malheureusement, ce genre de choses ne peuvent pas être résolues sur StackOverflow. – dlsniper