Let's say it clear: gdb
lacks an acceptable hexadecimal view for memory blocks. Commands like x/32c
get near, but it shows a confusing, misaligned mix of ASCII characters and octal garbage. I wish it was something like the x
command in lldb
.
BUT: you can get that (or at least something very similar) by defining a new command using an external call to the hd
external tool, that is probably already installed on your system.
The magic is done by adding the following snippet to your ~/.gdbinit
config file:
define hd dump binary memory dump.bin $arg0 ((void *)$arg0)+128 shell hexdump -C dump.bin shell rm dump.bin end
Now you have a new hd
command that accepts as its unique argument a pointer to your data and shows 128 bytes of pretty hexadecimal dump.
2023-08-20 Update: rewritten to make it compatible with OpenBSD, that doesn't have the hd
program and which gdb
lacks the eval
command (or has it disabled, I don't know nor care).