2013-04-16 14 views
12

Załóżmy, że mam bufor buf którego c ciąg reprezentacja jestJak mogę uczynić gdb drukować niedrukowalne znaki ciągu w języku heksadecymalnym zamiast ósemkowym, zachowując znaki ASCII w formie ASCII?

char* buf = "Hello World \x1c" 

Kiedy wydrukować ten buf w gdb przy użyciu polecenia p buf, mam następujący

$1 = "Hello World \034" 

Czy istnieje polecenie drukowania lub ustawienie gdb, które zamiast tego wypisze następujące elementy?

$1 = "Hello World \x1c" 

Próbowałem różnych parametrów formatu takich jak /c i /x, ale żaden z nich uzyskać efekt, że szukam. Grałem też z printf, ale nie byłem w stanie osiągnąć pożądanego efektu.

Aktualizacja: używam "GNU gdb (GDB) 7.0.1-debian".

Aktualizacja: Grałem również z x.

Jeśli wykonam x/c, wypisze ósemkowe i dziesiętne w przypadku niedrukowalnych znaków, a następnie wydrukuje możliwe do wydrukowania znaki z ASCII i dziesiętnym.

Jeśli wykonam x/s, wypisze dokładnie to samo, co polecenie p.

Jeśli wykonam x/x, to po prostu wyprowadza hex, ale wtedy tracimy znaki ASCII dla części do druku.

Aktualizacja: ta reference, chyba że jest niekompletna, sugeruje, że to czego chcę, nie jest dostępne, ale czy ktoś może to potwierdzić?

Odpowiedz

2

Można użyć polecenia x zrzutu pamięci swoje punkty odniesienia ciąg do:

(gdb) x/32xb buf 

pokazuje pierwsze 32 bajtów.

Zobacz

(gdb) help x 

szczegółowe informacje

+0

Proszę zobaczyć aktualizacje na pytanie. – merlin2011

+0

Robię niektóre debugowanie asma i próbuję zwiększyć czytelność, ułatwiając czytanie heksadecymalnie i ascii niezależnie, gdy są one obok siebie w ciągu znaków. – merlin2011

-2

można drukować bufor w postaci ciągu znaków za pomocą polecenia: print/s. W takim razie należy rozwiązać problem, aby rozwiązać problem.

+0

Wydaje się nie działać :-( (gdb) print/s bajtów 6 USD = (unsigned char *) 0x7ffff7ef3834 "\ 334 \ 250 \ 305% 1s \ 337 \ 022 \ 335 \ 226R \ 035r \ 022L \ 341 \ 350 \ 315 \ 203CZ \ 021 \ 271 \ 316 \ 3603 \ 326 \ 321 \ 027 \ 371 \ 251 | \ 343 \ fl \ 371 \ 003P \ 020 \ 223 \ 307v \ r \ 233 \ 020 \ 225 \ 225 # \ 252 \ 231 \ 261 \ 273 \\ " – Zardus

Powiązane problemy