c# - 在 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 的整个流程。
有人知道为什么会这样吗?我是否需要做其他事情才能通过堆栈调用进行级联?
任何帮助表示赞赏。
解决方案
推荐阅读
- php - 使用 WooCommerce 产品字幕插件的单个产品页面中未显示字幕
- selenium - RobotFrameWork:类名称更改如何将机器人导航到 2e TR 和 6e TC
- r - 将矩阵重塑为交替列的向量
- java - 当我在同一页面上有 15 个以上的按钮具有不同的 xpath 时,无法继续到下一个按钮
- php - 在 000webhost 中创建网站时遇到 PHP 错误
- javascript - 如何计算压缩对象的大小?
- apache-kafka - 如何使用 kafka.tools.JmxTool 访问 JMX 指标?
- javascript - 如何使用状态而不是参考来设置文本区域的选择?
- c# - 创建带有单选按钮的下拉菜单
- dbeaver - 在 DBeaver 中查看主键