调试DLL插件不起作用

时间:2013-07-23 05:31:45

标签: c# visual-studio debugging dll plugins

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

程序在启动时加载插件DLL,我可以通过专有程序中的时尚工作室访问它。

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

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

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

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

2 个答案:

答案 0 :(得分:2)

其实是的,真的很容易!您需要做的就是为AppDomain.FirstChanceException添加一个事件。抛出的任何异常,即使它们都在try-catch块中,也会被传递给此事件。

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);
    }
}

答案 1 :(得分:1)

尝试将相关的.pdb文件放在.dll旁边,以便提供该信息。