2013-05-02 6 views

risposta

18

Facile con il comando breakpoint command add. Digitare help breakpoint command add per i dettagli, ma ecco un esempio.

int main() 
{ 
    int i = 0; 
    while (i < 30) 
    { 
     i++; // break here 
    } 
} 

Eseguire lldb su questo. In primo luogo, mettere un punto di interruzione sulla linea di origine con "pausa" da qualche parte in esso (bello abbreviazione di esempi come questo, ma ha fondamentalmente a grep sopra le vostre fonti, quindi non utile per i progetti di grandi dimensioni)

(lldb) br s -p break 
Breakpoint 1: where = a.out`main + 31 at a.c:6, address = 0x0000000100000f5f 

Aggiungere un punto di interruzione condizione in modo che il punto di interruzione si ferma solo quando i è un multiplo di 5:

(lldb) br mod -c 'i % 5 == 0' 1 

Avere la stampa punto di interruzione il valore corrente di i e backtrace quando colpisce:

(lldb) br com add 1 
Enter your debugger command(s). Type 'DONE' to end. 
> p i 
> bt 
> DONE 

e quindi usarlo:

Process 78674 stopped and was programmatically restarted. 
Process 78674 stopped and was programmatically restarted. 
Process 78674 stopped and was programmatically restarted. 
Process 78674 stopped and was programmatically restarted. 
Process 78674 stopped 
* thread #1: tid = 0x1c03, 0x0000000100000f5f a.out`main + 31 at a.c:6, stop reason = breakpoint 1.1 
    #0: 0x0000000100000f5f a.out`main + 31 at a.c:6 
    3  int i = 0; 
    4  while (i < 30) 
    5  { 
-> 6   i++; // break here 
    7  } 
    8 } 
(int) $25 = 20 
* thread #1: tid = 0x1c03, 0x0000000100000f5f a.out`main + 31 at a.c:6, stop reason = breakpoint 1.1 
    #0: 0x0000000100000f5f a.out`main + 31 at a.c:6 
    #1: 0x00007fff8c2a17e1 libdyld.dylib`start + 1 
+0

Grazie mille amico! Ho pensato che doveva essere da qualche parte in "breakpoint set" e stavo scortando l'albero sbagliato. – PHD

Problemi correlati