Domanda:
Annotare lo stack in GDB?
David
2013-05-02 10:04:53 UTC
view on stackexchange narkive permalink

Esiste una GUI (o anche uno script per la CLI) per GDB che annoterà le viste dello stack con i registri salvati, ciascuno dei frame, ecc.? Dovrebbe essere possibile raccogliere queste informazioni su ogni chiamata e aggiungerle a una visualizzazione dello stack. Al momento, finisco per guardare lo stack con qualcosa come x / 40wx $ esp , che non è sorprendentemente illuminante.

Quale versione di GDB? Si può presumere che le versioni supportino già Python o no? Inoltre, solo i registri particolari vengono salvati con una chiamata. Hai controllato se il comando `frame` o` backtrace` mostra ciò che ti interessa? Dovrebbe essere possibile automatizzare l'attraversamento dei telai.
Una risposta:
perror
2013-05-02 18:03:15 UTC
view on stackexchange narkive permalink

Nemiver è una GUI per GDB che potrebbe includere tutte queste funzionalità (vedi la pagina delle funzionalità per saperne di più).

Ma, come 0xC0000022L lo menzionava nei commenti alla tua domanda, GDB ha già tali funzionalità tramite il comando info frame (abbreviazione if ) e il comando backtrace ( scorciatoia bt).

  (gdb) info frameStack livello 0, frame a 0x7fffffffe250: rip = 0x400517 in foo (hello.c: 6); rip salvato 0x400531 chiamato dal frame nella lingua di origine 0x7fffffffe260 c. Arglist a 0x7fffffffe240, args: val = 10 Locals at 0x7fffffffe240, SP del frame precedente è 0x7fffffffe250 Registri salvati: rbp a 0x7fffffffe240, rip a 0x7fffffffe248 (gdb) backtrace # 0 foo (val = 1000 # 1005) hello.c5 main () in hello.c: 12 (gdb)  

Potresti trovare altri comandi sull'esplorazione dello stack nel manuale GDB: Esame dello stack.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...