汇编 GDB 打印字符串

16

在汇编语言中,我声明了以下字符串:

Sample db "This is a sample string",0
在GDB中,我输入“p Sample”(不带引号),它输出0x73696854。我想要打印出实际的字符串。因此,我尝试了“printf%s,Sample”(同样不带引号),然后它输出“无法访问地址0x73696854的内存”。
简短版: 如何在GDB中打印字符串?
2个回答

18
我也遇到了同样的问题!尝试这个:

我也遇到了同样的问题!尝试这个:

x/s &Sample # prints the whole string

"x" - 通常用于检查数据。

对于单个字符,您可以使用此代码

x/c &Sample # prints: "T"

如果您想查看多个字符,可以指定所需字符数。

x/3c &Sample # prints: "T" "h" "i"

1
实际上它会先打印出字符的ASCII值,然后再打印出字符本身。因此,x/3c & Sample#会打印出:0x7fffffffdc52: 48 'T' 104 'h' 105 'i'。 - NAND

18

我的老师刚刚回复了我。对于任何想知道的人:

p(char[20]) Sample

要打印出前20个字符,可以使用以下代码:

如果要打印一个C风格的以NUL结尾的字符串,你也可以这样做:

print (char*) &Sample
printf "%s", &Sample

不确定您是否仍在活跃,但您可以接受自己的答案,以便更容易找到。 - DWuest

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接