2013-04-16 11 views
12

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?

risposta

2

si potrebbe utilizzare il comando x per eseguire il dump della memoria i tuoi punti di riferimento di stringa:

(gdb) x/32xb buf 

mostra i primi 32 byte.

Vedi

(gdb) help x 

per i dettagli

+0

Si prega di consultare gli aggiornamenti alla domanda. – merlin2011

+0

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

-2

è possibile stampare il buffer come una stringa con il comando: print/s. Quindi

$ print /s buf 

dovrebbe risolvere il tuo problema.

+0

Non sembra funzionare :-( (gdb) print/s byte $ 6 = (unsigned char *) 0x7ffff7ef3834 "\ 334 \ 250 \ 305% 1s \ 337 \ 022 \ 335 \ 226R \ 035r \ 022L \ 341 \ 350 \ 315 \ 203CZ \ 021 \ 271 \ 316 \ 360 \ 366 \ 324z \ 271 \ 027 \ 374 \ 251 \ 276Kb \ 321 \ 060 \ 203} PW \ 213 \ 030S \ 204 \ 261 | \ 227 | \ 343 \ fl \ 371 \ 003P \ 020 \ 225 \ 225 # \ 252 \ 231 \ 261 \ 273 \\ " – Zardus

Problemi correlati