我知道我们可以使用几个命令来访问和读取内存:例如,print、p、x…
但是如何更改任何特定位置的内存内容(在 GDB 中调试时)?
原文由 bits 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如 Nikolai 所说,您可以使用 gdb ‘set’ 命令来更改变量的值。
您还可以使用“set”命令更改内存位置。例如。扩展尼古拉的例子:
(gdb) l
6 {
7 int i;
8 struct file *f, *ftmp;
9
(gdb) set variable i = 10
(gdb) p i
$1 = 10
(gdb) p &i
$2 = (int *) 0xbfbb0000
(gdb) set *((int *) 0xbfbb0000) = 20
(gdb) p i
$3 = 20
这应该适用于任何有效的指针,并且可以转换为任何适当的数据类型。
原文由 Andrew Edgecombe 发布,翻译遵循 CC BY-SA 2.5 许可协议
1 回答2.3k 阅读✓ 已解决
2 回答1.6k 阅读✓ 已解决
2 回答1.6k 阅读✓ 已解决
2 回答1.3k 阅读
2 回答991 阅读✓ 已解决
3 回答1.6k 阅读
1 回答1.1k 阅读✓ 已解决
最简单的方法是设置程序变量(参见 GDB: assignment ):
或者您可以通过地址更新任意(可写)位置:
还有更多。阅读 手册。