Au lieu de gdbtui
ou ctrl+x
sous gdb
lequel affiche le code source en haut de l'écran, j'aimerais voir ceci dans mon éditeur Vim qui sauterait entre les onglets et les tampons en conséquence.
Comment puis-je faire ceci?
Au lieu de gdbtui
ou ctrl+x
sous gdb
lequel affiche le code source en haut de l'écran, j'aimerais voir ceci dans mon éditeur Vim qui sauterait entre les onglets et les tampons en conséquence.
Comment puis-je faire ceci?
Réponses:
Parmi tous les plugins que j'ai essayés, j'ai trouvé que ConqueGDB était la meilleure approche. ConqueGDB utilise Conque Shell pour incorporer un shell interactif dans vim, utilisé par GDB.
Le flux de travail avec ConqueGDB consiste à ne pas entrer de commandes GDB sur le terminal GDB, vous utilisez des raccourcis sur le code source vim. Mais vous pouvez continuer à utiliser l'invite GDB si vous le souhaitez, pour des commandes plus avancées, ou faire défiler pour voir la totalité de la session de débogage.
Certains mappages par défaut de ConqueGDB, par exemple:
Remarquez comment la ligne du curseur vim a été utilisée pour émettre une 'ligne d'impression' dans la base de données, l'exécution du code en cours est dans une autre ligne (14) et un point d'arrêt est indiqué à la ligne 10.
Pour installer avec Vundle par exemple:
Plugin 'vim-scripts/Conque-GDB'
J'utilise ces options de plugin:
let g:ConqueTerm_Color = 2 " 1: strip color after 200 lines, 2: always with color
let g:ConqueTerm_CloseOnEnd = 1 " close conque when program ends running
let g:ConqueTerm_StartMessages = 0 " display warning messages if conqueTerm is configured incorrectly
leader
dire
<leader>r
signifie <kbd> \ </ kbd> + <kbd> r </ kbd> sur mes ordinateurs. Le manuel de Vim a une entrée pour cela::help leader
<Leader>b
. Il définit un point d'arrêt à la position du curseur. Cependant, ce n'est PAS une bascule, vous ne pouvez donc pas l'utiliser pour la supprimer. Au lieu de cela, vous devrez écrire "clear" sur l'invite de la base de données.
Vous avez plusieurs plugins qui intègrent gdb.
Et il y a aussi un plugin qui intègre lldb (du projet LLVM)
Il semble que Bram travaille actuellement (septembre 2017) sur l'intégration de gdb à l'intérieur de vim grâce à la nouvelle :terminal
fonctionnalité. Pour l'utiliser, nous devons charger termdebug
packet (avec :packadd termdebug
), puis nous pourrons démarrer une console gdb dans une fenêtre vim avec :TermDebug (+options)
. OMI, on peut considérer que c'est l'avenir de l'intégration de la GDB sous Vim.
edit
Commande GDB
Ouvre un éditeur sur la ligne en cours en utilisant la commande:
$EDITOR +<current-line> <current-file>
La valeur par défaut editor
est ex
, mais vim
comprend également le +<current-line>
format.
Lorsque vous quittez l'éditeur, vous revenez dans gdb
.
Cela vous permet de parcourir la source librement et est particulièrement puissant si vous avez une ctags
intégration.
Il s'agit d'une intégration gdb à vim à sens unique pour un homme pauvre: la principale chose qui manque est la définition de points d'arrêt à partir de Vim.
edit
et centre
edit
ne centre pas Vim par défaut autour de la source, j'ai donc créé un script Python qui le fait: https://stackoverflow.com/questions/43557405/how-to-open-the-current-file-at-the- current-line-in-a-text-editor-from-gdb / 43557406 # 43557406
Commande de point d'arrêt à l'aide du presse-papier
Cette commande vim copie un spécificateur de point d'arrêt de type:
b <file-path>:<line-number>
dans le presse-papier:
command! Xg :let @+ = 'b ' . expand('%:p') . ':' . line('.')
Ensuite, vous pouvez simplement coller cela dans gdb
.
Il s’agit d’une intégration vim à gdb d’un pauvre pour faciliter l’établissement de points de rupture.
Voir aussi: https://stackoverflow.com/questions/3536600/do-you-debug-c-code-in-vim-how
Bien que pas techniquement vim. cgdb est une version maléfique de gdb avec des liaisons de clé similaires à vim. C'est mon débogueur de goto depuis des années: