使用 procdump 侦听所有异常不起作用

问题描述

我希望 procdump 侦听所有异常(无需指定进程名称或 ID)。

an example given here 开始,我认为使用以下方法应该可行:

procdump -ma -i

...但尽管我收到以下消息:

ProcDump is Now set as the Just-in-time (AeDebug) debugger.

...当某个进程发生异常时,不会转储任何内容

有意从以下 .NET 代码抛出异常:

using System;

namespace ProcdumpTest
{
    class Program
    {
        static void Main(string[] args)
        {
            if (ShouldAwaitKeyPress(args)) Console.ReadLine();
            Throw();
        }
        static void Throw()
        {
            throw new InvalidOperationException();
        }
        static bool ShouldAwaitKeyPress(string[] args)
        {
            var shouldAwaitKeyPress = false;
            if (args.Length > 0)
            {
               bool.TryParse(args[0],out shouldAwaitKeyPress);
            }
            return shouldAwaitKeyPress;
        }
    }
}

编译它并使用 ProcdumpTestProcdumpTest false 运行以便立即抛出异常,或者使用 ProcdumpTest true 以便等待按键抛出。

解决方法

感谢@Sebastian 的帮助解决了:

我最初在 procdump 下安装了 C:\Program Files,它需要管理员权限,虽然我在 run-as-administrator cmd 下执行了 procdump -i -ma,但 procmon 表明转储文件写入权限被拒绝了。

将目标转储文件夹更改为非管理员文件夹后,转储成功创建:

procdump -ma -i c:\path\to\some\non\admin\folder