![当 Vista 服务立即停止时记录要查找的位置](https://linux22.com/image/795838/%E5%BD%93%20Vista%20%E6%9C%8D%E5%8A%A1%E7%AB%8B%E5%8D%B3%E5%81%9C%E6%AD%A2%E6%97%B6%E8%AE%B0%E5%BD%95%E8%A6%81%E6%9F%A5%E6%89%BE%E7%9A%84%E4%BD%8D%E7%BD%AE.png)
我正在尝试诊断为什么 cygwin sshd 服务会立即启动和停止。在 Vista 应用程序事件日志中,我发现:
sshd: PID 3480: `sshd' service stopped, exit status: 255
这没什么帮助。
在哪里可以找到其他提示?日志中除了应用程序之外的其他地方?
答案1
如果进程在启动期间或启动后立即崩溃(看起来是这种情况),则应在应用程序日志中记录事件 ID 1000“应用程序错误”事件,并且可能被几个 Windows 错误报告条目包围。
如果我是你,我会将 Sysinternals 中的 procdump.exe 设置为我的即时调试器。你可以使用以下命令执行此操作:
procdump.exe -ma -i C:\dumps
这会修改 AEDebug 注册表项,以便每当系统上的进程崩溃时,它都会触发 procdump.exe 来捕获该进程的内存转储,然后您可以在 Windbg 中打开它并查看进程死亡前其堆栈上的内容等。
但无论如何,如果进程没有崩溃,而是由于其自身逻辑中的某些其他内部条件而正常退出,我有点怀疑,因为我认为应用程序永远不会有机会将您提到的事件写入日志,然后在您尝试启动服务时使用进程监视器(procmon)来跟踪正在运行的系统。
现在停止跟踪并跟踪您的进程。它尝试访问什么?查找Result != SUCCESS
该进程的事件...也许它正在寻找磁盘上的文件或无法找到的注册表项。您可能会看到类似这样的信息:进程尝试绑定到端口 443 上的套接字但被拒绝访问,或者找不到证书等。
虽然这不是什么灵丹妙药,但如果你遵循我给你的建议,这将是你获得的最佳信息,也是你调试此问题的最佳机会。