Supponiamo che io sono un buffer buf
cui c stringa di rappresentazione èCome posso fare in modo che gdb stampi caratteri non stampabili di una stringa in esadecimale anziché ottale conservando i caratteri ascii in forma ascii?
char* buf = "Hello World \x1c"
Quando stampo questo buf nel gdb con il comando p buf
, ottengo il seguente
$1 = "Hello World \034"
C'è un comando di stampa o un'impostazione gdb che stamperà invece i seguenti?
$1 = "Hello World \x1c"
Ho provato diversi parametri di formato, come /c
e /x
, ma nessuno di loro ottenere l'effetto che sto cercando. Ho anche giocato con printf ma non sono riuscito a ottenere l'effetto desiderato.
Aggiornamento: Sto usando "GNU gdb (GDB) 7.0.1-debian".
Aggiornamento: Ho giocato anche con x.
Se faccio x/c
stampa ottale e decimale per caratteri non stampabili, quindi stampa caratteri stampabili con l'ASCII e il decimale.
Se faccio x/s
emette esattamente lo stesso del comando p.
Se faccio x/x
, emette solo hex ma poi perdiamo i caratteri ascii per la parte stampabile.
Aggiornamento: Questo reference, a meno che incompleto, suggerisce che ciò che desidero non è disponibile, ma qualcuno può confermare?
Si prega di consultare gli aggiornamenti alla domanda. – merlin2011
Sto facendo un debug di asm e sto cercando di massimizzare la leggibilità rendendo facile leggere hex e ascii indipendentemente quando sono affiancati in una stringa. – merlin2011