linux - 读取/proc/PID/短暂进程的映射

标签 linux memory debian proc aslr

我有一个二进制文件在执行后不久就退出/出现段错误。我试图在它退出之前读取这个二进制文件的/proc/PID/maps 但没有成功。

我已经尝试过 cat/proc/($./binary [input] & echo $!)/maps 应该导致/proc/pidofprocess/maps 但总是得到 No such file 或目录。

我的目标是查看在后续运行中将内容加载到何处。

最佳答案

你的解决方案cat /proc/$(<pipeline>)/maps不会调用cat直到整个<pipeline>已经结束(即使你在其中使用 &),所以你永远不会得到你的 maps .

另一方面,

<pipeline> & cat /proc/${!}/maps

马上回来。当然,当您的二进制文件立即退出时,cat可能仍然来不及捕获 /proc/${!}/maps

但是你可以试试:

while true; do; ./binary [input] & cat /proc/${!}/maps ; done

这将重新开始您的 binary 之间的竞赛和 cat一整天,有时 cat可能会赢(在我的例子中,它确实是用 ls <nonexisting file> 而不是 ./binary 30 次中有 1 次)

这会在您的终端上打印出大量垃圾,但您可以通过重定向 cat 来收集成功的 map 。输出:

while true; do; ./binary [input] & cat /proc/${!}/maps >> mymaps; done

优雅?没有。有效:我希望如此!

关于linux - 读取/proc/PID/短暂进程的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57069454/

相关文章:

linux - 如何在 Intel CPU 上找到 L3 Cache 参数?

c++ - 您将如何使用二维来处理一维内存?

java - 尝试创建字符串

linux - 组合框搜索按键间隔

linux - 在/dev/shm 的子目录中创建共享内存时,shm_open() 失败并返回 EINVAL

linux - 改变 xdg-open 的行为

linux - 在 Linux bash 中, sleep 一定的数字会永远持续下去

linux - 使用带有附件和主题行的 unix 命令发送邮件

c - C Debian Linux 中简单 shell 的意外行为

linux - debian 终端无法更改为 su