在汇编语言中,我声明了以下字符串:
Sample db "This is a sample string",0
在GDB中,我输入“p Sample”(不带引号),它输出0x73696854。我想要打印出实际的字符串。因此,我尝试了“printf%s,Sample”(同样不带引号),然后它输出“无法访问地址0x73696854的内存”。简短版: 如何在GDB中打印字符串?
我也遇到了同样的问题!尝试这个:
x/s &Sample # prints the whole string
"x" - 通常用于检查数据。
对于单个字符,您可以使用此代码
x/c &Sample # prints: "T"
如果您想查看多个字符,可以指定所需字符数。
x/3c &Sample # prints: "T" "h" "i"
我的老师刚刚回复了我。对于任何想知道的人:
p(char[20]) Sample
要打印出前20个字符,可以使用以下代码:
如果要打印一个C风格的以NUL
结尾的字符串,你也可以这样做:
print (char*) &Sample
printf "%s", &Sample
x/3c & Sample#
会打印出:0x7fffffffdc52: 48 'T' 104 'h' 105 'i'。 - NAND