manager - Depuración de plugins Vim con trazas de llamadas
vim plugin manager (3)
Para complementos sofisticados, normalmente la depuración o el seguimiento de la línea de comandos no es suficiente.
Puede usar BreakPts para hacer una depuración visual dentro de vim.
Se basa en la depuración remota, por lo que necesita depurar una instancia de servidor de vim.
Básicamente:
Terminal 1:
$ vim --servername Foo
...
set breakpoint on any Foo function
do whatever operation which trigger Foo logic
...
Terminal 2:
$ vim
:BreakPts
:BPRemoteServ FOO
:BPDWhere locate (actual debug execution point)
:BPDNext or F12 (next execution line)
:BPDStep or F11 (step inside functions, dictionary functions)
:BPDEvaluate or F8 (if pressed on visual selection evaluates that)
:BPDCont or F5 (continue execution)
Vea que algunos complementos se cargan dinámicamente, por lo que necesita operar con ellos antes de establecer puntos de interrupción.
Una vez cargado, puede establecer puntos de interrupción desde vim conectado con:
:BPFunctions (Show debuggeable fuctions on RemoteServer)
:BPScripts (Show debuggeable scripts on RemoteServer)
:BPPoints (Show defined breakpoints on RemoteServer)
He arreglado / ajustado / evolucionado muchos complementos de vim gracias a este excelente complemento.
¿Cuál es el método general preferible para depurar / rastrear complementos de vim? Supongamos que tengo un complemento Foo bastante sofisticado, que al presionar una tecla F9 abre una nueva ventana con el buscador de archivos y ofrece la posibilidad de elegir un archivo, después de que el nombre del archivo se copia en la ventana principal. Me gustaría ver cómo se llama cuando presiono la tecla F9 , algún tipo de rastreo de llamadas.
Si ya tiene vim abierto, intente ejecutar el comando manualmente en el depurador incorporado de VIM.
1) Averigua qué hace vim cuando presionas la tecla
:map <F-9>
2) Ejecute el comando asignado manualmente bajo el depurador
:debug _mapped_command_
3) En este momento debería estar en el depurador, por lo que
set verbose=20
4) Y finalmente presione n
tecla Intro para continuar ejecutando el script
En este punto, debería ver un montón de resultados en la pantalla. Puede presionar Espacio para desplazarse por la pantalla, j / k para moverse por línea.
Cualquier salida que comience con "Line #:" es la línea que vim está ejecutando en ese momento.
La mejor manera que he encontrado es usar el indicador -V
al iniciar (g) vim. Puede especificar un nivel de seguimiento N
y un nombre de archivo para el registro escrito:
$ vim -V[N]{filename}
Luego se darán mensajes de rastreo para cada archivo que se obtenga. (Ver :help -V
para más información).
El rastreo del archivo de registro resultante puede ser doloroso, pero generalmente es bastante informativo. Creo que es mejor ver el archivo de registro antes y después del evento de activación (presionando <F9>
en su caso) para obtener una imagen de cuándo está sucediendo.