问题描述
我希望 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;
}
}
}
编译它并使用 ProcdumpTest
或 ProcdumpTest 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