2012-10-17 9 views
7

Spesso trovo utile camminare nello stack quando eseguo il debug di un programma e ottengo i simboli per qualsiasi valore allineato a forma di puntatore che incontri. Mi sono stancato di farlo manualmente e così ho provato a scrivere un comando che lo fa per me. Il problema è che il "simbolo delle informazioni" non sembra gradire l'utilizzo di una variabile di convenienza come parametro quando il parametro è stato impostato tramite la dereferenziazione del puntatore. IE:Ottenere informazioni sui simboli per il valore contenuto nella variabile di convenienza GDB

(gdb) info symbol 0xb6ca4d28 
[Useful Symbol Information] 
(gdb) set $pointer = $esp 
(gdb) while (*(int*)$pointer != 0xb6ca4d28) 
>set $pointer += 4 
>end 
(gdb) x/x $pointer 
0x6ebee064:  0xb6ca4d28 
(gdb) set $dereferencePointer = *(int *)$pointer 
(gdb) p/x $dereferencePointer 
$103 = 0xb6ca4d28 
(gdb) info symbol $dereferencePointer 
No symbol matches $dereferencePointer. 
(gdb) set $dereferencePointer = 0xb6ca4d28 
(gdb) p/x $dereferencePointer 
$104 = 0xb6ca4d28 
(gdb) info symbol $dereferencePointer 
[Useful symbol information] 
(gdb) 

Perché è questo? è un insetto? C'è un modo diverso per farlo?

Grazie!

Luc

PS: Usando GDB vaniglia 7.5

Aggiornamento dalla lista:

Questo è probabilmente un bug.

+1

Forse una mailing list 'gdb' potrebbe essere il posto migliore per chiedere. –

+0

Per il follow up: non avendo trovato un equivalente gdb di freebsd-domande, ho inserito questa domanda nella lista generale gdb e devo ancora ottenere una risposta. Se lo faccio, aggiornerò la domanda. – shroudednight

+0

Per la cronaca, sembra funzionare bene su 'GNU gdb (GDB) 7.3.50.20111117-cvs-debian' – Jester

risposta

1

Errore o meno, si consiglia di utilizzare l'identificatore di formato/a con i comandi p e x. Questo funziona sempre per me, ed è anche più veloce da digitare.

Problemi correlati