Avez-vous de débogage de code C++ dans Vim? Comment?
La question est de savoir pour vous tous les gens, qui utilisent Vim pour développer des applications C++.
Il y avait une période dans ma vie, qui peut être décrit comme
"Je déteste Vim!!!'..'Vim est beau!'
Cependant, ayant grandi principalement sur le développement de Microsoft IDEs, j'ai utilisé pour ces F5-F11 raccourcis lors du débogage de code, la fenêtre watch pile d'appel et le code principal - tous visibles sans avoir à taper les commandes GDB.
Donc, voici la question:
Vous utilisez Vim aussi bien pour le débogage? Ou passez-vous à certains IDE pour ce but? Lequel?
Pour ceux qui utilisent Vim pour déboguer le code: il y a des plugins pour définir des points d'arrêt dans l'éditeur, mettez en surbrillance la ligne, nous sommes actuellement à la débogage, l'auto-navigation au cours de l'étape, l'étape dans, sortir?
S'il vous plaît, ne me dites pas que vous utilisez GDB que la ligne de commande, voir une seule ligne, ce qui est débogué, etc.
- Je suis sûr que vous pouvez toujours trouver des gens en développement et le débogage avec "ed".
- Oh mon dieu, ils répondent à des questions "debug mon code C++ plz", mais proche de ce que trop localisée... ridicule!
- Essayez
gdb -tui
. - Êtes-vous coincé sur Vim ou prêts à regarder d'autres éditeurs comme Emacs, qui a un grand gdb intégration intégré? Est le principal problème avec gdb la seule ligne de sortie par défaut ou pour éviter de taper l(ist) constamment gdb -tui aide?
Vous devez vous connecter pour publier un commentaire.
En contraste avec les autres réponses, il y a au moins trois options de faire tout ce dont vous avez besoin: clewn, pyclewn et vimgdb.
Toutes les trois projets sont liés. vimgdb est un patch contre Vim et nécessite Vim être recompilés. clewn est un programme autonome qui communique avec Vim par le biais de l'edi Netbeans socket interface. Cela nécessite de Vim à être construit avec la
+netbeans
option (c'est le cas dans les distributions Linux récentes, ce qui ne devrait pas être un problème).Pour citer le clewn site web:
Je pense que vous devriez certainement donner un aller.
La page d'accueil du pyclewn site web montre une comparaison entre les trois projets.
Il y A quelques mois j'ai essayé pyclewn. C'était un peu difficile à configurer, mais il a l'air bien et prometteur. Je viens de faire quelques tests et vous pouvez définir des signets, etc., les trucs habituels que vous attendez d'un débogueur graphique. J'ai fini par ne pas l'utiliser pour le contingent de raisons, mais je suis désireux de donner une autre chance.
Vim est un éditeur confortable, mais pour faire du débogage-je utiliser un débogueur (comme GDB).
Mais vous n'avez pas à utiliser GDB en mode texte; vous pouvez utiliser une interface graphique comme KDbg, DDD ou Insight.
Il y a des façons d'obtenir de GDB dans Vim (mais vous ne obtenez le texte en fonction de débogage).
GDB
edit
commandeOuvre un éditeur sur la ligne actuelle à l'aide de la commande:
La valeur par défaut
editor
estex
, maisvim
comprend également l'+<current-line>
format.Lorsque vous quittez l'éditeur, vous obtenez de retour dans
gdb
.Cela vous permet de parcourir la source librement et est spécialement puissant si vous avez
ctags
intégration.C'est un pauvre intégré dans un sens gdb à vim de l'intégration: la principale manquant chose est de définir des points d'arrêt de Vim.
edit
et centreedit
n'a pas de centre de Vim par défaut autour de la source, j'ai donc créé un script Python qui n': Comment ouvrir le fichier en cours à la ligne actuelle dans un éditeur de texte à partir de GDB?Point d'arrêt de commande dans le presse-papiers helper
Ce vim commande des copies d'un point d'arrêt spécificateur de type:
dans le presse-papiers:
Alors vous pouvez simplement coller dans
gdb
.C'est un homme pauvre vim pour gdb intégration pour faciliter la définition de points d'arrêt.
GDB tableau de bord
https://github.com/cyrus-and/gdb-dashboard
Cela n'a rien à voir avec Vim, mais c'est une solution légère qui réalise beaucoup de choses et peut convenir à d'autres Vimmers là.
D'autres ont mentionné GDB TUI, mais je l'ai trouvé trop cassé et pas assez puissant pour être supportable.
Donc je l'ai déplacé à la place de l'API Python de solutions à base tels que GDB tableau de bord.
J'ai décrit utilisées et justification dans le détail: gdb vue partagée avec le code
Voici une capture d'écran de ce qu'il vous donne:
Voir aussi: https://vi.stackexchange.com/questions/2046/how-can-i-integrate-gdb-with-vim
Vim ajouté un débogueur intégré officiellement dans la version 8.1, publié en Mai 2018. La fonction avait été présent dans certains de la version 8.0 de presse ainsi, dès le mois d'août 2017.
La suite de vim commandes de charger le plugin et démarrer le débogueur.
La dernière commande prend un programme comme un argument facultatif, ou à l'inverse, un programme peut être chargé à partir de la
gdb
fenêtre avec lefile
commande.Avec le plugin chargé,
gdb
peut être utilisé de manière interactive dans la fenêtre correspondante. Par exemple, les points d'arrêt peut être réglé, le code peut être franchi, et les variables peuvent être inspectés.Vim commandes peuvent être émises pour interagir avec
gdb
. Les commandes comprennent:Step
,:Over
,:Finish
,:Continue
,:Stop
,:Break
,:Clear
, et:Evaluate
.En outre, il y a des boutons cliquables en haut de la fenêtre de l'éditeur pour l'interaction avec
gdb
.La fenêtre de l'éditeur est mis à jour pour refléter l'état de débogage. Les points d'arrêt sont indiqués avec
>>
et la ligne en cours est mis en évidence.Intégré dans la page d'aide comprend une documentation détaillée.
J'ai récemment écrit un post de blog qui marche à travers un exemple de session.
https://www.dannyadam.com/blog/2019/05/debugging-in-vim/
À l'aide d'un débogueur est qu'une des nombreuses façons de diagnostiquer défectueux comportement d'un programme, et je trouve rarement moi-même le lancement de l'un, malgré le fait qu'il est très facile à faire.
Donc pour moi, il n'y a tout simplement aucun avantage inhérent à l'aide d'un éditeur de texte qui se trouve également être un débogueur. Au lieu de cela, j'utilise l'éditeur de texte que je préfère -- indépendamment de ce que débogueur je choisis d'utiliser. Pour le moment, j'utilise principalement la gedit et kdbg à ces fins, mais ces choix évoluer de façon indépendante au cours du temps.
Ayant récemment travaillé sur une application pour un bout de temps que nécessaire un tas de trucs à être mis en place sur la boîte, il était en cours d'exécution (l'appareil mis en place), j'ai écrit le code dans vim, avait scripts automatisés du bâtiment, et de les pousser à un serveur, qui avait un script là pour avis de la sentinelle fichier poussé le long de avec les fichiers binaires. Ce serait alors redémarrer les services appropriés sur la zone, et dans une autre fenêtre ssh, j'ai eu un
tail -f
en cours d'exécution sur mon fichier journal.Longue histoire courte, je ne l'ai pas utiliser un débogueur à tous. Si j'avais quelque chose de mort de façon inattendue, que je venais de remonter les niveaux d'enregistrement, de la refaire, et de voir quelle était la dernière chose enregistré avant sa mort, puis d'analyser et de résoudre le problème.
La bonne chose est que lorsque quelque chose a eu des problèmes dans l'environnement d'un client, je venais de demander un niveau de Débogage journal et pourrait identifier le problème sans même demander l'accès à leur serveur.
... mais oui, il y avait des moments où il aurait été agréable d'avoir un débogueur.
Juste pour ajouter à ci-dessus :
OMI vim tend à être tout à fait un peu de l'éditeur et de débogage tend à ajouter du poids. Il y a des façons de le faire savoir à l'aide d'vim7.4+ avec
et le lancement de la ligne de commande suivante (malédictions) débogueurs. Quelques-uns sont utilisés par défaut pour les IDEs que vous n'avez jamais su. c'est à dire lldb = xcode.
évidemment, il ya plus de la cli de base; @tous, n'hésitez pas à suggérer et à ajouter à la liste. merci!