【发布时间】:2010-09-16 17:32:57
【问题描述】:
我正在编写一个跟踪工具,它需要处理 JIT 的输出,因此堆栈有时看起来很奇怪。我想尝试对地址应用一些启发式方法来确定它们是代码、数据还是垃圾。 (如果有时我错了,那没什么大不了的;但是,如果进程崩溃了,也没什么。)
我可以cat /proc/«pid»/maps 获取 Linux 中某个进程的 VM 映射列表。是否可以在不解析该文件的情况下从进程内部访问此信息(或任何子集)?检查地址的rwx 位是理想的。本质上,我想要mprotect(2) 的“阅读”版本。
如果我不能这样做,如何确定对某个地址的访问是否会导致分段错误? (在这种情况下已经安装了一个SIGSEGV 处理程序,我不能轻易覆盖它,或者我就这样做。)
【问题讨论】: