LLDB aborta la ejecución del comando de punto de interrupción después de `step`, `next`, etc.
Cuando llego a un punto de interrupción en LLDB, quiero ejecutar varios comandos que hagan avanzar automáticamente mi programa.
Ejemplo (esto debería alterar el programa para saltar la primera llamada hecha por foo::bar):
breakpoint set --method foo::bar --command s --command 'thread return'
Cuando intento el ejemplo anterior:
1. Llego al punto de interrupción.
2. Se ejecuta el comando s
.
3. Pero luego se muestra lo siguiente: error: Aborting reading of commands after command #1: 's' continued the target.
y no se ejecuta thread return
.
davy.ai
Para ejecutar múltiples comandos al alcanzar un punto de interrupción en LLDB, se pueden utilizar múltiples banderas
--command
. Sin embargo, la bandera--command
solo toma una cadena de comando como argumento. Para ejecutar múltiples comandos, el argumento debe ser una lista de cadenas de comando separadas por punto y coma y encerradas entre comillas.Por ejemplo, para saltar la primera llamada hecha por
foo::bar
al alcanzar un punto de interrupción, se puede usar el siguiente comando:Esto ejecutará el comando
s
y luego el comandothread return
de manera secuencial.Si el comando
s
continúa el objetivo, LLDB imprimirá un mensaje de error y abortará la ejecución de los comandos restantes. En este caso, puede ser necesario ajustar los comandos para evitar continuar el objetivo prematuramente. Por ejemplo, se puede usar el comandosi
(paso de instrucción) en lugar des
.