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