debugging 调试时修改GDB中的char*

yzxexxkh  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(176)

当我用GDB调试时,我可以打印字符串:

x/s $r0

输出为

IDog123456

我想更改该值,以便在打印x/s $r0时看到

ICat45555

我曾尝试:

set $r0+1 ={int} 0x43617434 #Cat4
set $r0+5 ={int} 0x35353535 #5555

但它不工作,我怎么能做到这一点没有malloc?只有十六进制字符串请?

ubbxdtey

ubbxdtey1#

一般来说,gdb表达式解析器的操作与当前语言类似,因此,在上面的代码中,当您编写:

set $r0+1 ={int} 0x43617434 #Cat4

左手是整型常量,不能赋值。
相反,您应该像在C中那样编写此代码:

set *($r0+1) = (int) 0x43617434

应该可以了。
有时候,您可能也需要强制转换LHS的指针,如下所示:

set *((int *) ($r0+1)) = (int) 0x43617434

但我想你的情况会很好。

相关问题