La pregunta es para todas las personas que usan Vim para desarrollar aplicaciones C ++.
Hubo un período en mi vida, que se puede describir como "¡Odio a Vim!" .. "¡Vim es agradable!"
Sin embargo, habiendo crecido principalmente en IDE de desarrollo de Microsoft, me he acostumbrado a esos F5- F11accesos directos al depurar código, ventana de observación, pila de llamadas y el código principal - todo visible sin necesidad de escribir ningún comando GDB.
Así que aquí está la cuestión:
¿Utiliza Vim también para la depuración? ¿O cambias a algún IDE para este propósito? ¿Cúal?
Para aquellos que usan Vim para depurar código: ¿hay complementos para establecer puntos de interrupción en el editor, resaltar la línea que estamos depurando actualmente, navegación automática durante el paso, entrar, salir?
Por favor, no me diga que usa GDB como línea de comando, vea solo una línea que se depura, etc.
gdb -tui
.Respuestas:
En contraste con las otras respuestas, hay al menos tres opciones que hacen exactamente lo que necesita: clewn , pyclewn y vimgdb .
Los tres proyectos están relacionados. vimgdb es un parche contra Vim y requiere que Vim se vuelva a compilar. clewn es un programa independiente que se comunica con Vim a través de la interfaz de socket Netbeans. Esto requiere que Vim se cree con la
+netbeans
opción (este es el caso en las distribuciones recientes de Linux, por lo que no debería ser un problema).Para citar del sitio web del clewn:
Creo que definitivamente deberías intentarlo.
La página de inicio del sitio web de pyclewn muestra una comparación entre los tres proyectos.
Hace unos meses probé pyclewn. Fue un poco difícil de configurar, pero se ve bien y prometedor. Acabo de hacer algunas pruebas y podría establecer marcadores, etc., lo habitual que esperaría de un depurador gráfico. Terminé no usándolo por razones contingentes, pero estoy ansioso por intentarlo de nuevo.
fuente
Vim agregó oficialmente un depurador incorporado en la versión 8.1, lanzado en mayo de 2018. La característica también había estado presente en algunas de las versiones de la versión 8.0, ya en agosto de 2017.
Los siguientes comandos vim cargan el complemento e inician el depurador.
El último comando toma un programa como argumento opcional o, alternativamente, se puede cargar un programa desde la
gdb
ventana con elfile
comando.Con el complemento cargado,
gdb
se puede utilizar de forma interactiva en la ventana correspondiente. Por ejemplo, se pueden establecer puntos de interrupción, se puede pasar el código y se pueden inspeccionar las variables.Se pueden emitir comandos Vim para interactuar con
gdb
. Algunos comandos relevantes incluyen:Step
,:Over
,:Finish
,:Continue
,:Stop
,:Break
,:Clear
, y:Evaluate
.Además, hay botones en los que se puede hacer clic en la parte superior de la ventana del editor para interactuar
gdb
.La ventana del editor se actualiza para reflejar el estado de la depuración. Los puntos de interrupción se indican con
>>
y la línea actual se resalta.La página de ayuda integrada incluye documentación exhaustiva.
Recientemente escribí una publicación de blog que muestra una sesión de ejemplo.
https://www.dannyadam.com/blog/2019/05/debugging-in-vim/
fuente
Vim es un buen editor, pero para hacer la depuración utilizo un depurador (como GDB).
Pero no tiene que usar GDB en modo texto; puede usar una interfaz gráfica como KDbg , DDD o Insight .
Hay formas de obtener GDB en Vim (pero luego obtienes depuración basada en texto).
fuente
edit
Comando GDBAbre un editor en la línea actual usando el comando:
El valor predeterminado
editor
esex
, perovim
también comprende el+<current-line>
formato.Cuando abandonas el editor, vuelves a entrar
gdb
.Esto le permite navegar libremente por la fuente y es especialmente potente si tiene
ctags
integración.Esta es una integración integrada de gdb a vim de un hombre pobre: lo principal que falta es establecer puntos de interrupción desde Vim.
edit
y centroedit
no centra Vim de forma predeterminada alrededor de la fuente, por lo que he creado un script de Python que lo hace: ¿Cómo abrir el archivo actual en la línea actual en un editor de texto de GDB?Comando de punto de interrupción para ayuda del portapapeles
Este comando vim copia un especificador de punto de interrupción de tipo:
al portapapeles:
Entonces puedes pegar eso
gdb
.Esta es la integración de vim a gdb de un hombre pobre para facilitar el establecimiento de puntos de interrupción.
Panel de GDB
https://github.com/cyrus-and/gdb-dashboard
Esto no tiene nada que ver con Vim, pero es una solución ligera que logra mucho y podría adaptarse a otros Vimmers.
Otros han mencionado GDB TUI, pero lo encontré demasiado roto y no lo suficientemente poderoso como para ser soportable.
Por lo tanto, me mudé a soluciones basadas en API de Python como GDB Dashboard.
Describí el uso y la justificación con más detalle en: vista dividida de gdb con código
Aquí hay una captura de pantalla de lo que te da:
Ver también: /vi/2046/how-can-i-integrate-gdb-with-vim
Ríndete y usa un IDE real
Con todo lo dicho, esta es la mejor solución para la mayoría de las personas, incluido yo mismo. La mayoría de las personas solo ganarán toneladas de tiempo si pueden saltar las definiciones de una manera consciente de la clase C ++ sin seleccionar e instalar varios complementos diferentes, y eso incluye mientras se depuran los pasos. A partir de 2020, el menos peor para mí fue Eclipse: https://www.slant.co/topics/1411/~best-ides-for-c-on-linux
fuente
El uso de un depurador de nivel fuente es solo una de las muchas formas de diagnosticar el comportamiento defectuoso del programa, y rara vez me encuentro lanzando uno, a pesar de que es muy fácil de hacer.
Entonces, para mí, simplemente no hay una ventaja inherente al usar un editor de texto que también resulta ser un depurador . En cambio, uso el editor de texto que prefiero, independientemente de qué depurador elijo usar. Por el momento, uso principalmente gedit y kdbg para estos fines, pero estas elecciones evolucionan de forma independiente con el tiempo.
fuente
Actualización 2020: hay un nuevo plugin vimspector que utiliza el protocolo de adaptador de depuración
Instale el complemento https://github.com/puremourning/vimspector#installation
Configurar (escribir
.vimspector.json
)Compilar con el símbolo de depuración
g++ cpp.cpp -ggdb -o cpp
Presione
F4
para iniciar la depuración.vimspector.json
en cuenta mi en mi directorio de inicio (así que trabaje en cualquier subdirectorio)fuente
Después de haber trabajado recientemente en una aplicación durante mucho tiempo que requería un montón de cosas en su lugar en la caja en la que se estaba ejecutando (configuración del dispositivo), escribí el código en vim, tenía scripts que automatizaban la construcción, empujándola a un servidor , que tenía una secuencia de comandos allí para notar el archivo centinela junto con los binarios. Esto reiniciaría los servicios apropiados en el cuadro, y en otra ventana ssh tuve una
tail -f
ejecución en mi archivo de registro.En pocas palabras, no utilicé un depurador en absoluto. Si algo muriera inesperadamente, simplemente subiría los niveles de registro, lo rehacería y vería qué fue lo último que se registró antes de que muriera, luego lo analizaría y solucionaría el problema.
Lo bueno fue que cuando algo tenía problemas en un entorno de cliente, solo pedía un registro de nivel de depuración y podía identificar el problema sin siquiera requerir acceso a su servidor.
... pero sí, hubo momentos en que hubiera sido bueno tener un depurador.
fuente
Solo para agregar a lo anterior:
IMO vim tiende a ser un editor bastante ligero y la depuración tiende a aumentar el peso. Hay formas de hacerlo, es decir, usar vim7.4 + con
y ejecutar uno de los siguientes depuradores de línea de comandos (maldiciones). Algunos se usan por defecto para IDEs que nunca conoció. es decir, lldb = xcode.
obviamente hay más cli; @todos siéntase libre de sugerir y agregar a la lista. ¡Gracias!
fuente