如何让GDB按字面打印字符串(不转义)?

s4y*_*s4y 7 gdb

我有一个很长的字符串,我想捕获到一个文件.我可以使用日志记录来获取大部分内容:

set logging on
set logging file gdb.log

...但是如果我使用px/s打印字符串,引号和垃圾都会被转义.我怎么能按原样获得字符串?

s4y*_*s4y 7

啊,我完全忘记了printf

printf "%s\n", some_string


sco*_*ttt 5

对于一个真正的大串您还可以使用:

(gdb) set variable $s = MY_STRING
(gdb) dump binary memory FILE $s $s + strlen($s)
Run Code Online (Sandbox Code Playgroud)

可以很容易地适应处理空字节的缓冲区。FILE的内容也绝不会包含字符串以外的任何内容。