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ć?
Proszę zobaczyć aktualizacje na pytanie. – merlin2011
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