首页 > 解决方案 > 在 Visual Studio 中通过堆叠的 dll 进行调试

问题描述

我正在使用 Visual Studio 2017 Enterprise,并且我有一个 ASP 解决方案,它使用多个按顺序相互引用的已编译 dll,即我的解决方案引用 A.dll,A.dll 使用 B.dll 等等。我的解决方案使用 .NET 4.0,并且每个 dll 都在 .NET 3.5 中编译。我想调试整个堆栈,直到最后一个 dll (D.dll) 中的调用。这些是dll:

在此处输入图像描述

我做了什么:我取消选中Enable Just My Code并选中Enable .NET Framework source stepping。我使用 dotpeek 为每个 dll 生成了 pdb 文件,然后我将它们移动到 Symbols Cache 文件夹中,并指定了模块来加载这些特定的 dll。

当我调试时(我在调试模式下使用任何 CPU 配置运行解决方案)我可以看到在 Debug/Windows/Modules 窗口中加载的每个 pdb,我可以看到每个窗口的源代码,并且一切正常,直到我到达 A。 dll。当我尝试进入 B.dll 时,我收到以下消息:

您的应用已进入中断状态,但当前没有执行所选调试引擎支持的代码(例如,仅执行本机运行程序代码)。

奇怪的是,如果我在 D.dll 中设置函数断点,该断点会被命中,但同样的方法不适用于 B 或 C。没有像“当前断点不会被命中”这样的警告,它只是不触发。我想查看从我的解决方案到最后一个 dll 的整个流程。

有人知道为什么会这样吗?我是否需要做其他事情才能通过堆栈调用进行级联?

任何帮助表示赞赏。

标签: c#.netvisual-studio

解决方案


推荐阅读