调试器不会在程序集上命中断点

Posted

技术标签:

【中文标题】调试器不会在程序集上命中断点【英文标题】:Debugger does not hit breakpoints on assemblies 【发布时间】:2015-12-13 12:11:57 【问题描述】:

在 Web 应用程序中,我无法调试程序集,但可以调试其他程序集。

我有一个工具,它使用 CSC(使用 /debug 参数)在网络路径上构建一些程序集,并且在编译程序集和 pdb 结束时复制到本地站点 bin 文件夹中;例如构建两个程序集:

    webui.dll webbiz.dll

我有一个来自 webui 和 webbiz 的中间程序集 webframework.dll,它显示了它们使用的一些方法。

我遇到问题时的情况如下:

我从httphandler调用了webui.dll的一个方法,使用Assembly.Load,在这里我可以调试webui的方法 按照我调用webframework的方法的代码,这里我也可以调试它的方法 按照我调用网络框架方法的代码,该方法处理其他程序集调用;这里的委托被称为使用 Assembly.LoadFile 的 webbiz 方法...这里我可以调试 webframework 方法,但是 不是 webbiz

这里我完全糊涂了,我找不到解决办法。

一些信息:

    webapp 在 IIS 而非 IIS express 下运行 所有程序集都为调试而编译,并且 pdb 是新的且未损坏 如果我尝试Step Into webbiz 方法,我看到The application in in break mode,我必须点击Continue execution 我使用的是 VS2015,VS2013 运行良好 (!) 这是一个与 ASP .NET 相关的问题,因为如果我尝试在控制台应用程序上重现该问题,我可以进行调试 如果我将 webbiz 程序集放在不同于 bin 的路径中,我可以调试!

【问题讨论】:

【参考方案1】:

我发现解决问题的唯一方法是使用Assembly.UnsafeLoadFrom 而不是Assembly.LoadFile

【讨论】:

以上是关于调试器不会在程序集上命中断点的主要内容,如果未能解决你的问题,请参考以下文章

解决VS调试时断点不会命中的问题

当前不会命中断点 - 远程调试

ASP.NET 应用程序调试:断点当前未命中

无法调试Windows服务 - 断点当前不会被命中

windbg断点命中时,其它线程在运行吗

VS 2010 远程调试器断点当前不会被命中。没有为此文档加载任何符号