linux - 如何在 gdb 中搜索进程的所有内存?

标签 linux debugging gdb

我正在尝试使用 GDB 在当前附加到的正在运行的进程中找到某个值(整数魔数(Magic Number) (654321))。 我找到了一个find [/sn] start_addr, +len, val1 [, val2, ...] 命令,但它需要开始和结束地址,但我不知道我的进程内存从哪里开始以及结束的地方。

这似乎是一个非常普遍的问题,但我记得一年前用谷歌搜索过它,现在我重复了一遍但没有成功,所以.. 我如何知道进程内存从哪里开始,从哪里结束?

最佳答案

“所有内存”的概念在现代过程中很复杂。您真正拥有的是来自不同来源的许多映射。您可以枚举这些(确保不要尝试在没有读取权限的情况下读取 map !此外,您可能想要应用一些智能,这样您就不会最终搜索共享库的 .text 部分等...)读书/proc/$pid/maps在运行时,然后编写一些脚本来为 gdb 提供适当的命令。老实说,我认为在二进制本身中编写一个例程来执行此操作并从 gdb 调用它可能是最简单的。

关于linux - 如何在 gdb 中搜索进程的所有内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11593678/

相关文章:

gdb - 在 eclipse CDT 中使用步骤过滤器进行调试

linux - Nginx url重写错误: [emerg] unexpected "}"

c++ - VS2017 C++ 调试器跳过代码行

css - 卡住关键帧动画以进行调试

使用 clang 编译程序时,可以在 gdb 中扩展 C 宏吗?

c++ - 如何使用 gdb 达到与使用可视化调试器相同的效率水平?

linux - centos 7中Docker启动失败

linux - 有不同的 sudo 和 SFTP 密码?

php - 找不到类 memcached

android - 任务 ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' 执行失败。 flutter