1

我们有一个作为 Windows 服务运行的非托管 C++ TCP 服务器应用程序,在 Win2003 服务器上运行几天后,它正在静默崩溃。没有生成 Dr. Watson 日志文件(Dr. Watson 日志没有问题,因为它捕获了同一应用程序中的其他崩溃)。由于缺少 Dr. Watson 日志文件,我们无法进一步调试此问题。

TCP 服务器应用程序是一种 HTTP 处理器。它连接到广泛的网络服务器并处理数据。

有人可以指导我如何调试静默崩溃。有 1000 多个用户随时连接到该服务器,因此无法在调试模式下运行相同的用户。崩溃是不可重现的,并且在 6 台服务器之一上每 5-10 天发生一次。

任何可以帮助调试这些静默崩溃的工具。该应用程序是一个纯 C++ 应用程序,没有任何 MFC 或 STL。

提前致谢。

克里希纳

4

1 回答 1

2

上次我遇到这样的静默崩溃问题,是因为C 运行时参数验证。,默认情况下只是调用TerminateProcess而没有任何其他好处(取决于msvcrt*.dll您链接到的版本)。如果这是您的问题的原因,您可以通过调用_set_invalid_parameter_handler并提供一个处理程序来避免它,该处理程序可以调用DebugBreak(强制崩溃)或不执行任何操作,从而允许将错误代码返回给调用者。详细信息在上面的链接中。

于 2010-07-08T17:21:09.523 回答