我正在 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/