我可以在 procfs 中创建任何文件映射来反射(reflect)我的程序的内部状态吗?
例如,
main.c:
char *message;
...
假设 pid 是 1200,是否可以创建一个临时文件/proc/1200/variables/message,它将反射(reflect)消息变量?
我想我需要使用 proc fs,因为有/proc/.../{net, fd, task, etc.},如果我想在过程 fs?
最佳答案
没有工具可以完成您想完成的事情。
有些东西关闭 -- gdb(1)
知道如何内省(introspection)正在运行的程序并显示某些变量的值(并非所有变量都在编译后存活-- 虽然调试 -g
标志帮助 gdb(1)
发现可能对您的程序进行了哪些优化。
FUSE项目使用户空间程序可以通过内核为其他进程提供文件系统。您可以直接使用 FUSE 从您的程序中导出选定的变量,或者您可以尝试一些更雄心勃勃的事情并编写工具来封装 gdb(1)
的内省(introspection)能力和 FUSE 的发布能力,并为世界。
您也可以考虑使用 9p
从您的程序内部——它在本质上类似于 FUSE,允许程序通过文件系统接口(interface)为其功能提供接口(interface)。 (您可以在 wmii
window manager 中看到它的使用,其中可以通过文件系统接口(interface)对窗口管理器进行数量惊人的控制,从而可以使用您喜欢的任何语言轻松进行编程。)您可以再次将其与 gdb(1)
的内省(introspection)能力试图提供这一点。
我希望这样的项目值得高级项目或研究生院项目——而不是很快就能完成的事情。
关于c - 将程序状态导出到 procfs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8192937/