将调试程序附加到Windows 8.1中的Services.exe

时间:2015-11-17 08:01:31

标签: windows debugging windows-8.1 windbg

我已尝试将调试程序附加到Windows 8.1中的Services.exe,但我始终得到“访问被拒绝”。即使确保WinDbg以“作为管理员”(以高程启动)运行,也是如此。

为了测试,我尝试从任务管理器创建一个内存转储文件,我得到了同样的错误。

我还尝试使用Sysinternals(ProcExp)中的Process Explorer创建转储,我也遇到了同样的错误。

Here is the screenshot of services.exe it its process tree

上图显示了services.exe所在的进程树(使用procexp查看)。有趣的是,我们可以为wininit.exe和svchost.exe创建转储文件,但不能为services.exe创建转储文件。

我有一些同事在Windows 7上对此进行测试,它运行正常。对于Windows 8.1上的用户,他们会得到与我相同的行为。

我想知道这是否是Windows 8.1的变化。我希望有人可以评论是否有办法让我们将调试器附加到services.exe。

2 个答案:

答案 0 :(得分:3)

好的,谢谢大家的贡献和评论。经过一些研究:事实证明 - services.exe是Windows 8.1中受保护的进程,因此无法直接使用。调试器也必须转换为受保护的进程。一种方法是首先使用内核调试器:

http://www.overclock.net/t/1300855/going-deep-dumping-the-memory-of-a-protected-process

答案 1 :(得分:0)

鉴于你想要调试svchost.exe - 我猜你想要调试服务。

一般情况下,svchost.exe会托管其中的多项服务。首先,您应该在单个服务中运行只是您的过时服务。

我自己多年没有调试服务了。但我记得使用这些链接寻求帮助:

一个。 How to debug Windows services with Windbg (MSDN Blog)

Debugging a Service Application (MSDN)

这些可以帮助 - 如果你还没有看过它们。