GDB中如何按r5寄存器值打印r1指向的指定字节内存?
GDB按寄存器值指定内存打印长度的正确操作
直接用x/$r5 $r1无效,是因为GDB的x命令格式段不支持直接引用寄存器,可通过以下两种实用方法解决:
利用
eval动态生成打印命令
这是最稳妥的方式,通过eval将r5的数值代入到x命令的格式参数中:eval "x/%dx $r1", $r5如果需要切换打印格式,把命令里的
x换成对应格式符即可——比如打印字节用b、十进制输出用d,示例:eval "x/%db $r1", $r5。使用GDB变量替换语法直接构造命令
也可以直接在x命令里通过${}展开寄存器的求值结果:x/${$r5}x $r1该写法会先计算
r5存储的数值,再将其作为打印长度传入x命令。
注意:确保r5中存储的是合法的正整数,否则会触发GDB参数错误提示。
内容的提问来源于stack exchange,提问作者Kokomelom
相关产品推荐
相关产品推荐

