C# 从未处理的错误中获取更多错误信息

C# 从未处理的错误中获取更多错误信息,c#,dll,runtime-error,C#,Dll,Runtime Error,我正在桌面应用程序中使用C# 我正在调用一个用C编写的DLL,我没有它的源代码 无论何时调用此DLL,我都会得到一个未捕获的错误,我会将其捕获到一个未处理的异常事件/委托中 对象引用未设置为对象的实例 但是堆栈跟踪是空的 当我在谷歌上搜索时,返回的信息是错误被删除了,然后被重新删除。但这只能是在DLL中我没有的源代码 那么,我是否可以获得有关此错误的更多信息 这是我的密码 在program.cs中 AppDomain.CurrentDomain.UnhandledException += new

我正在桌面应用程序中使用C#

我正在调用一个用C编写的DLL,我没有它的源代码

无论何时调用此DLL,我都会得到一个未捕获的错误,我会将其捕获到一个未处理的异常事件/委托中

对象引用未设置为对象的实例

但是堆栈跟踪是空的

当我在谷歌上搜索时,返回的信息是错误被删除了,然后被重新删除。但这只能是在DLL中我没有的源代码

那么,我是否可以获得有关此错误的更多信息

这是我的密码

在program.cs中

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中截取异常,但我不确定这一点。祝你好运