C# 从未处理的错误中获取更多错误信息
我正在桌面应用程序中使用C# 我正在调用一个用C编写的DLL,我没有它的源代码 无论何时调用此DLL,我都会得到一个未捕获的错误,我会将其捕获到一个未处理的异常事件/委托中 对象引用未设置为对象的实例 但是堆栈跟踪是空的 当我在谷歌上搜索时,返回的信息是错误被删除了,然后被重新删除。但这只能是在DLL中我没有的源代码 那么,我是否可以获得有关此错误的更多信息 这是我的密码 在program.cs中C# 从未处理的错误中获取更多错误信息,c#,dll,runtime-error,C#,Dll,Runtime Error,我正在桌面应用程序中使用C# 我正在调用一个用C编写的DLL,我没有它的源代码 无论何时调用此DLL,我都会得到一个未捕获的错误,我会将其捕获到一个未处理的异常事件/委托中 对象引用未设置为对象的实例 但是堆栈跟踪是空的 当我在谷歌上搜索时,返回的信息是错误被删除了,然后被重新删除。但这只能是在DLL中我没有的源代码 那么,我是否可以获得有关此错误的更多信息 这是我的密码 在program.cs中 AppDomain.CurrentDomain.UnhandledException += new
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
Exception _ex = (Exception)e.ExceptionObject;
//the stact trace property is empty here..
}
finally
{
Application.Exit();
}
}
我的DLL
[DllImport("AutoSearchDevice.dll", EntryPoint = "Start", ExactSpelling = false, CallingConvention = CallingConvention.StdCall)]
public static extern int Start(int ASD_HANDLE);
我这样称呼它:
public static void AutoSearchStart()
{
try
{
Start(m_pASD);
}
catch (Exception ex)
{
}
}
我的建议是考虑整合ELMAH ELMAH将在应用程序运行时在后台记录异常。它最常用于Web站点和服务,在这些站点和服务中更难看到未处理的异常,但这里有一篇文章介绍如何将它用于控制台和桌面应用程序 它应该能够看到并能够从异常中写出所有相关数据。它也可以通过Nuget软件包轻松安装,有很多关于设置ELMAH的好文章,比如这篇,所以如果您有设置问题,请尝试gogling 警告:如果dll开发人员我们是坏人,发现异常并抛出一个新的异常,那么您可能看不到堆栈跟踪
try
{
//code
}
catch(Exception ex)
{
throw new Exception;
}
如果他们已经这样做了,或者创建了一个新的异常,并且只是在上面复制了消息,那么他们实际上已经忽略了您要查找的详细信息。这很糟糕,ELMAH可能仍然能够从dll中截取异常,但我不确定这一点。祝你好运