es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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:

    breakpoint set --method foo::bar --command "s; thread return"
    

    Esto ejecutará el comando s y luego el comando thread 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 comando si (paso de instrucción) en lugar de s.

Comments are closed.