我有一个二进制文件,执行后不久退出/ segfaults。我正在尝试在此二进制文件退出之前读取/ proc / PID / maps,但是没有运气。
我尝试过cat /proc/($./binary [input] & echo $!)/maps
,它应该导致/ proc / pidofprocess / maps,但始终不会获得此类文件或目录。
我的目标是查看后续运行中将内容加载到何处。
答案 0 :(得分:1)
您的解决方案cat /proc/$(<pipeline>)/maps
直到整个cat
结束(即使您在其中使用<pipeline>
时,都不会调用&
,所以您将永远无法获得{ {1}}。
另一方面,
maps
将立即返回。当然,随着二进制文件立即退出,<pipeline> & cat /proc/${!}/maps
可能仍然运行得太晚而无法捕获cat
但是您可以尝试:
/proc/${!}/maps
这整天重新开始了您的while true; do; ./binary [input] & cat /proc/${!}/maps ; done
和binary
之间的比赛,并且有时 cat
可能会获胜(就我而言,{ {1}},而不是cat
中30的1)
这会在您的终端上打印大量垃圾,但是您可以通过重定向ls <nonexisting file>
的输出来收集成功的地图:
./binary
优雅?不。有效:希望如此!