使用ProcDump获取服务转储?

时间:2012-01-26 10:06:59

标签: service windows-services procdump

有没有人知道它是否可能/如何使用ProcDump来获取Windows服务的转储?我想要运行的命令是这样的:

ProcDump -e -mp -x myservice.exe mydump.dmp

但是我从命令行或调试器消息中得到无法启动服务。有没有人知道是否有解决方法?

3 个答案:

答案 0 :(得分:2)

确定在我玩了一下之后我发现了如何做到这一点,我需要的命令是:Procdump -e -mp 14312 mydump.dmp其中14312是服务的进程ID,你可以在任务管理器中找到它在服务标签中。

答案 1 :(得分:2)

万一有人遇到这种情况,我通常会运行:

procdump.exe -ma -i C:\Dumps

这会将procdump注册为即时(AeDebug)调试器,并应为系统上的任何崩溃进程创建一个转储。

与为特定进程名称或PID配置转储相比,“发现广域网”产生了更好的结果。

答案 2 :(得分:0)

还有另一个选项,即使在Windows服务启动时,也可以转储异常。借助"Image File Execution Options",您可以在服务调试器时配置procdump。

<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">

别忘了用您的值替换大括号。 请检查procdump命令行参数-ma,-e 1,-t,-n 10 here

的含义。

要卸载procdump:

reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\{your service executable name. f.e. notepad.exe}" /v "Debugger" /t REG_SZ /d "{procdump path}\procdump -ma -accepteula -e 1 -t -n 10 -x {dumps output folder}" /f