2015-12-17 7 views
5

In gdb, quando si esegue il comando next. Si applica alla cornice più interna anziché alla cornice selezionata. Come chiedere a gdb di entrare nella riga successiva del frame selezionato?gdb: applica "successivo" al frame selezionato anziché al frame più interno

Per Esempio:

Impostare un punto di interruzione in una sotto-funzione:

(gdb) b subfunc 
Breakpoint 1 at 0x400f09: file prog.c, line 94. 
(gdb) c 
Continuing. 

Breakpoint 1 at 0x400f09: file prog.c, line 94. 
94  void subfunc() { 

Cambio frame selezionato:

(gdb) up 
#1 0x0000000000400f7e in main (argc=1, argv=0x7fffffffe468) at prog.c:70 
70   subfunc(); 

voglio fermarsi alla riga 71 della prog.c:

(gdb) n 
95   i = 0; 

... ma arresta la linea 95 di prog.c.

+0

Fornire ulteriori informazioni. Per il debug, usa solo l'ottimizzazione '-O0' o' -Og' (preferita). – Olaf

risposta

5

ho finalmente trovato quello che voglio. advance consentire di continuare fino a una determinata riga. Così advance +1 fare il lavoro. Può essere abbreviato adv +1.

0

Penso che down quindi finish funzionerà.

+1

Funziona solo se vuoi andare solo su un frame in alto. Non è conveniente quando si desidera interrompere molti frame superiori. – Jezz