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.
Forse una mailing list 'gdb' potrebbe essere il posto migliore per chiedere. –
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
Per la cronaca, sembra funzionare bene su 'GNU gdb (GDB) 7.3.50.20111117-cvs-debian' – Jester