【发布时间】:2010-11-18 11:57:12
【问题描述】:
我目前有一个操作系统,它支持像 syslog 这样的日志记录机制。然而,当涉及到调试进程时,即找出特定进程与系统中的其他进程交换了哪些事件或消息是乏味的。
谁能给我建议一个更好的机制来做同样的事情?
【问题讨论】:
-
这些流程程序是您拥有源代码并且可以修改的吗?
-
我猜源目前不可用,并且存在文件系统内存限制,因为我无法在磁盘上写入大量文件
我目前有一个操作系统,它支持像 syslog 这样的日志记录机制。然而,当涉及到调试进程时,即找出特定进程与系统中的其他进程交换了哪些事件或消息是乏味的。
谁能给我建议一个更好的机制来做同样的事情?
【问题讨论】:
我建议使用某种抽象来包装您的消息传递机制。然后,您可以将诊断放在消息传递层中。我想这是某种设计模式。创建一个抽象,包括进程之间的连接器和通过连接器发送的消息。如果您的消息抽象包含一个标识符(例如 GUID),那么您可以记录流经连接器的消息并轻松地在系统中跟踪它们。看看C2 architectural style 了解一些想法。
【讨论】:
我们的部分 switch 应用程序使用 20+ 个单线程进程来处理事务,每个进程处理一小部分事务处理然后向下一个进程发送请求。最终最后一个进程回复,回复消息以相反的顺序发回。
我们的应用程序都将其跟踪记录到自己的日志文件中,这对于诊断问题不是很有用。因此,跟踪层还将所有跟踪发送到调试服务器进程,当一个进程发送或接收消息时,此信息会以消息的唯一 ID 发送到调试服务器。这使调试服务器能够将所有消息连接在一起,并使我们能够获得每个事务的系统视图。
显然这是非常耗费资源的,因此默认情况下在繁忙的系统上是关闭的,但可以打开它并在运行时设置跟踪级别以诊断现场和开发中的问题。
【讨论】: