窥探进程间通信

时间:2010-11-06 12:39:56

标签: interprocess

有没有人试图创建进程间通信的日志文件?有人可以就实现这个目标的最佳途径给我一些建议吗?

3 个答案:

答案 0 :(得分:2)

问题不是很明确,评论不太清楚,但无论如何......

首先要尝试的两件事是ipcs strace -e trace=ipc

答案 1 :(得分:1)

如果您想记录所有IPC(看起来非常密集),您应该考虑使用仪器。

他们有很多很好的工具,请查看手册中PINthis section;

  

在这个例子中,我们展示了如何做   更具选择性的仪器   检查说明。这个工具   生成所有内存的痕迹   程序引用的地址。   这对于调试和调试也很有用   用于模拟数据缓存   处理器。

如果你做了一些重量级的调整和分析,请查看TAU(调整和分析实用程序)。

答案 2 :(得分:1)

与内核驱动程序的通信可以采用多种形式。通常有一个特殊的设备文件用于通信,或者可以有一个特殊的套接字类型,如NETLINK。如果幸运的话,有一个字符设备,read()和write()是唯一的交互方式 - 如果是这种情况,那么这些调用很容易被各种方法拦截。如果你运气不好,很多事情都是用ioctls做的,或者更困难的事情。

然而,使用内核驱动程序在程序上运行'strace'可以揭示它所做的一切 - 尽管如果恰好有程序用于通信的库,'ltrace'可能更具可读性。通过将参数调整为'strace',您可以获得一个只包含所需信息的转储:

  • 首先,只是关注调用并尝试找出内核通信的方法
  • 然后,添加过滤器以进行调用以仅记录内核通信调用
  • 最后,确保strace记录所有调用的完整字符串,这样您就不必处理截断的数据

指向IPC调试的答案可能并不重要,因为与内核的通信几乎从未与IPC有任何关系(至少不是不同的UNIX IPC设施)。