2017-07-21 5 views
0

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 
     } 
    ] 
} 
+0

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

+0

@dlsniper, fichier LOG de l'IDE: http: //s000.tinyupload.com/? File_id = 03959827677220728410 – Arseny

+0

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

Répondre

0

problème a été IDE basé. Résolvez dans la version: Construire: EAP 12, 172.3757.46 Sortie le: Aug 11, 2017