我正在尝试在我当前使用GDB附加的正在运行的进程中找到某个值(整数幻数(654321))。
我找到了一个find [/sn] start_addr, +len, val1 [, val2, ...]
命令,但它需要开始和结束地址,但我不知道我的进程内存在哪里开始以及它在哪里结束。
这似乎是一个非常普遍的问题,但我记得一年前谷歌搜索它,我现在重复了一遍没有成功,所以...... 我如何知道进程内存的起始位置和结束位置?
答案 0 :(得分:4)
“现代记忆”的概念在现代过程中是复杂的。你真正拥有的是来自不同来源的许多映射。您可以枚举这些(请确保不要尝试从没有读取权限的地图读取!此外,您可能希望应用一些智能,这样您最终不会搜索共享库的.text部分等...)在运行时读取/proc/$pid/maps
,然后编写脚本以向gdb提供适当的命令。老实说,我认为在二进制文件中编写例程来执行此操作并从gdb中调用它可能是最简单的。