c# - DLL插件调试不起作用

标签 c# visual-studio debugging dll plugins

我正在 Visual Studio 2012 中创建一个 DLL 文件,该文件用作专有程序中的类库插件。

该程序在启动时加载插件 DLL,我可以在 Visual Studio 中访问它,就像专有程序中的时尚一样。

但是,如果插件中的某个方法由于某种原因失败,我并不总能获得堆栈跟踪,并且无法单步执行源文件。

我已将 PDB 文件放在同一目录中,但我相信环境的错误处理会接管,因此我收到一个错误,指示专有程序失败的位置,而不是我的插件失败的位置。

我无法创建测试 stub ,因为 DLL 依赖于专有程序中创建的实例。

如何以有效的方式调试 DLL,而不必在每隔一行上放置消息/日志语句?

最佳答案

其实是的,这真的很简单!您所需要做的就是为 AppDomain.FirstChanceException 添加一个事件。抛出的任何异常,即使它们位于 try-catch block 中,也会传递给此事件。

public class MyPlugin : IPlugin
{
    static MyPlugin()
    {
        AppDomain.CurrentDomain.FirstChanceException += FirstChanceHandler;
    }

    static void FirstChanceHandler(object source, FirstChanceExceptionEventArgs e)
    {
        MyErrorLogger.WriteLine("FirstChanceException event raised in {0}: {1}",
            AppDomain.CurrentDomain.FriendlyName, e.Exception.Message);
    }
}

关于c# - DLL插件调试不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17802131/

相关文章:

c# - System.Web.Services.Protocols.SoapException : Server was unable to process request. ---> System.ArgumentNullException

c++ - 使用natvis的循环双链表可视化

java - 字符串到日历对象

c# - unity 根据其他物体角度旋转物体

c# - linq 查询返回太多结果

c# - HttpClientHandler 不包含 DefaultProxyCredentials 的定义

c++ - 使用 CRT 库查找特定的内存泄漏

c# - 在 C# 中创建新的 Excel 应用程序时出现 "Class not registered"错误

.net - WiX:无法从程序集加载 "ReadRegistry"任务 [...] 该程序集由比当前加载的运行时更新的运行时构建

java - eclipse 。调试时如何查看标准函数的来源?