我正在使用Visual Studio 2017 Enterprise,并且我有一个ASP解决方案,该解决方案使用几个互相引用的编译dll,即我的解决方案引用A.dll,A.dll使用B.dll,依此类推。我的解决方案使用.NET 4.0,并且dll均已在.NET 3.5中进行了编译。我想调试整个堆栈,直到最后一个dll(D.dll)中的调用为止。这些是dll:
我所做的事情:我没有选中仅启用我的代码,而是选中了启用.NET Framework源代码步进。我使用dotpeek为每个dll生成了pdb文件,然后将它们移动到Symbols Cache文件夹中,还指定了模块来加载这些特定的dll。
当我调试(我使用任何CPU配置在Debug模式下运行解决方案)时,我可以看到Debug / Windows / Modules窗口中加载的每个pdb,我可以看到每个窗口的源代码,一切正常,直到我到达A.dll。当我尝试进入B.dll时,出现以下消息:
您的应用已进入中断状态,但当前未执行任何代码 所选调试引擎支持的版本(例如,仅本地 runtine代码正在执行)。
奇怪的是,如果我在D.dll中设置了功能断点,则该断点会被命中,但对于B或C而言,此方法将不起作用。不会出现类似“不会击中当前断点”的警告,它只是不会触发。我想查看从解决方案到最后一个dll的整个流程。
有人知道为什么会这样吗?我需要做其他事情来级联堆栈调用吗?
感谢您的帮助。