如何在调试时更改变量的值?

逆向工程 linux 数据库
2021-06-25 17:15:53

我知道我可以使用输出变量的值

(gdb) p var_name
$1 = "varvalue"

有没有办法在使用 gdb 调试时设置变量的值?我使用的文档似乎没有这个命令。

编辑

从那以后我了解到我可以通过简单地调用它们的函数来改变内存中对象的状态!因此,要修改类型为 的对象std::string,只需assign按如下方式调用该函数:

(gdb) call str.assign("New Value")

谢谢你。

2个回答

谷歌是你的朋友:

例如,如果您的程序具有可变宽度,那么如果您尝试仅使用 `set width=13' 设置新值,则会出现错误,因为 GDB 具有设置宽度的命令:

(gdb) 什么是宽度  
类型 = 双   
(gdb) p 宽度 $4 = 13  
(gdb) 设置宽度=47  
表达式中的语法无效。 

无效的表达式当然是`=47'。为了实际设置程序的可变宽度,请使用

(gdb) 设置 var 宽度=47

您可以在以下文档中找到所需的信息

稍后,但要设置一个字符串变量,你应该试试这个>

gdb 设置 var string_variable = 'new_string_variable'

两个变量定义的字符编号必须相同,以便根据需要应用更改。需要将引号应用于新变量。