我们有一个 STA 模式的 C++ 项目,它打开一个 C#/WPF 库,该库通过 WindowsFormsIntegration 托管 ESRI ArcEngine MapControl
。这在 Visual Studio 2013 中工作得很好。自从我们切换到 VS2015 Update 3 后,在 wntdll.pdb 中遇到神秘断点后,在调试(在调试和发布中)时启动 ArcEngine 部分会非常慢:“ArcEngineTestApp.exe 已触发断点”
输出窗口中没有进一步的解释(请参阅完整的 output )。当我点击“继续”时,应用程序会继续加载符号,但至少从现在开始,它肯定比 Visual Studio 2013 慢。VS 2015 需要 15 秒才能到达断点,之后需要 2 分 15 秒才能完成加载。 VS 2013 显示 ArcEngine 在 15-20 秒内完成。请参阅此屏幕截图进行比较(不幸的是无法复制时间戳)
当我在消息上单击“中断”时,显示“wntdll.pdb 未加载”:
从 Microsoft 服务器加载 pdb 失败。
为了证明这一点,我们制作了 demo project (详情请参阅下文)。
这仅在调试时发生。编译后的应用程序运行良好且快速。
我们已经尝试过但没有成功的方法:
- 搜索了“已触发断点”消息,但未找到类似问题。
- 已停用已知会出现性能问题的设置(XAML 的 UI 调试工具、诊断工具、IntelliTrace)
- 在调试/符号中未激活符号服务器
- 没有安装任何已知会影响性能的 VS 扩展。 (完整列表见下文)
- 尝试了不同的 ArcEngine 版本(10.3.1 和 10.4)
- 从 MS 和 ESRI 符号服务器加载符号并将其缓存在本地。
- 删除所有断点
- 我完全重新安装了我的电脑。现在只安装了一个 Visual Studio (2015)
- 在另一台电脑上测试(安装了多个 VS)- 相同的行为
已安装的扩展列表:
- 桌面插件的 ArcObjects SDK 集成
- ArcObjects SDK 集成实用程序
- 开发者分析工具
- 保存时格式化文档
- Microsoft.NET 核心工具
- Microsoft ASP.NET 和 Web 工具
- Microsoft ASP.NET Web 框架和工具
- Microsoft Azure 应用服务工具
- 微软互联服务
- VS 2015 的 NuGet 包管理器
- Productivity Power Tools 2015(仅激活输出窗口中的时间戳)
- 适用于 Microsoft Visual Studio 的 TypeScript
- Visual Studio 可扩展性模板
VS 2015 Output (从 ArcEngine 调用开始)。
运行Demo project ,您需要有效的 ArcEngine 许可证和 ArcEngine SDK。由于许可原因,我们无法发布 ESRI dll。将它们复制到项目文件夹“ArcEngineTestLibs”中。
最佳答案
当我将“调试/调试器类型”中的 C++ 项目设置从“自动”更改为“仅托管”时,它又像 VS 2013 中一样快。仍然想知道为什么。
关于c++ - 调试时出现 "myapp.exe has triggered a breakpoint"- 之后 Visual Studio 2015 Update 3 中的符号加载速度缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40489106/