2009-08-11 81 views
1

我目前拥有支持日志机制的操作系统,如syslog。然而,在调试一个过程时,也就是找出哪些事件或消息与系统中的其他进程交换了一个特定的进程是很乏味的。通过进程记录消息交换

任何人都可以建议我做一个更好的机制吗?

+0

这些程序是否具有源代码并且可以修改? – 2009-08-11 05:52:23

+0

我猜目前来源不可用,并且存在文件系统内存限制,因为我无法在磁盘上写入大量文件 – Thunderboltz 2009-08-12 16:45:10

回答

1

我会推荐用某种抽象来包装消息传递机制。然后,您可以将诊断程序放置在消息传递层中。我会想象这是某种设计模式。创建一个抽象,其中包括连接器之间的进程和消息通过连接器发送。如果您的消息抽象包含一个标识符(例如GUID),那么您可以记录流经连接器的消息,并轻松通过系统跟踪消息。有些想法请看C2 architectural style

1

我们的交换机应用程序的一部分使用20+单线程进程来处理事务,每个进程处理事务处理的一小部分,然后将请求发送到下一个进程。最后一个进程回复,回复消息以相反的顺序发回。

我们的应用程序都将自己的跟踪写入自己的日志文件,这对诊断问题并不是很有用。因此,跟踪层还会将所有跟踪发送到调试服务器进程,当进程发送或接收到消息时,该消息也会通过该消息的唯一标识发送到调试服务器。这使得调试服务器能够将所有消息连接在一起,使我们能够获得每个事务的系统视图。

显然这是非常耗费资源的,因此默认情况下在繁忙的系统上关闭,但可以打开它并在运行时设置跟踪级别以诊断现场和开发中的问题。