【发布时间】:2014-08-22 14:52:02
【问题描述】:
这是应该生成第一次机会异常的代码。
class MyClass
{
public string SomeField { get; set; }
}
class Program
{
static void Main(string[] args)
{
try
{
Print(null);
}
catch { }
}
static void Print(MyClass myclass)
{
Console.WriteLine(myclass.SomeField);
}
}
我如下设置 ProcDump 来捕获故障转储。
ProcDump -ma MyApplication.exe
据我了解,此命令应同时捕获第一次机会和第二次更改异常。但是对于上面的代码,我没有得到任何异常。如果从我的代码中删除 catch 块,那么我会得到一个转储文件,但应该是第二次机会异常。任何想法为什么我没有第一次机会得到任何崩溃转储?
【问题讨论】:
-
我很确定“第一次机会异常”只是调试器的事情。 ProcDump 只会在应用程序未处理的异常情况下触发,因此会在操作系统上传递。用调试器的话来说,这些是“第二次机会异常”。为什么,确切地说,你想收集第一次机会异常的转储?为什么不能只使用调试器调试那些?
-
我当然可以,但我想了解是否可以捕获第一次机会异常。我将命令更改为 ProcDump -ma -e 1 MyApplication.exe,它也应该捕获第一次机会,但仍然没有看到任何捕获的转储文件。
-
您是否在运行带有调试器的应用程序?如果是这样,它会在 ProcDump 处理它之前首先获取异常。不过,听起来你已经知道的比我多。我不知道 ProcDump 有一个
-e 1选项。 :-) -
nops,我没有在调试器下运行应用程序
标签: .net c#-4.0 first-chance-exception procdump