相关文章推荐
刀枪不入的鞭炮  ·  《三国杀》官网-全新2025版-轻松上手,其乐无穷·  1 月前    · 
鼻子大的汤圆  ·  中国交通信息科技集团有限公司·  4 月前    · 
爱跑步的钥匙  ·  《自然》杂志解密百年来最高引用率研究成果-- ...·  4 月前    · 
乖乖的绿豆  ·  IBM Watson Speech to Text·  5 月前    · 
忐忑的感冒药  ·  人太多、路太堵!沈阳地铁9号线北延线若开建, ...·  1 年前    · 
Code  ›  linux - 如何使用 GDB 修改内存内容? -
linux系统 segmentfault gdb
https://segmentfault.com/q/1010000042786414
飘逸的企鹅
2 年前
segmentfault segmentfault
注册登录
问答 博客 标签 活动
发现
✓ 使用“Bing”搜本站 使用“Google”搜本站 使用“百度”搜本站 站内搜索
注册登录
  1. 首页
  2. 问答
  3. Stack Overflow 翻译
  4. 问答详情

如何使用 GDB 修改内存内容?

社区维基
1
发布于
2022-11-10
新手上路,请多包涵

我知道我们可以使用几个命令来访问和读取内存:例如,print、p、x…

但是如何更改任何特定位置的内存内容(在 GDB 中调试时)?

原文由 bits 发布,翻译遵循 CC BY-SA 4.0 许可协议

Stack Overflow 翻译 c linux memory gdb
阅读 803
2 个回答
得票 最新
社区维基
1
发布于
2022-11-10
✓ 已被采纳

最简单的方法是设置程序变量(参见 GDB: assignment ):

 (gdb) l
6       {
7           int i;
8           struct file *f, *ftmp;
(gdb) set variable i = 10
(gdb) p i
$1 = 10

或者您可以通过地址更新任意(可写)位置:

 (gdb) set {int}0x83040 = 4

还有更多。阅读 手册。

原文由 Nikolai Fetissov 发布,翻译遵循 CC BY-SA 3.0 许可协议

社区维基
1
发布于
2022-11-10

正如 Nikolai 所说,您可以使用 gdb ‘set’ 命令来更改变量的值。

您还可以使用“set”命令更改内存位置。例如。扩展尼古拉的例子:

 (gdb) l
6       {
7           int i;
8           struct file *f, *ftmp;
(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
 
推荐文章
刀枪不入的鞭炮  ·  《三国杀》官网-全新2025版-轻松上手,其乐无穷
1 月前
鼻子大的汤圆  ·  中国交通信息科技集团有限公司
4 月前
爱跑步的钥匙  ·  《自然》杂志解密百年来最高引用率研究成果--中国科学院武汉病毒研究所
4 月前
乖乖的绿豆  ·  IBM Watson Speech to Text
5 月前
忐忑的感冒药  ·  人太多、路太堵!沈阳地铁9号线北延线若开建,20万人将受益_腾讯新闻
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号