我们有一个 STA 模式的 C++ 项目,它打开一个托管 ESRI ArcEngine 的 C#/WPF 库MapControl
通过 WindowsFormsIntegration。这在 Visual Studio 2013 中工作得很好。自从我们切换到 VS2015 Update 3 后,在 wntdll.pdb 中遇到神秘断点后,在调试(在调试和发布中)时启动 ArcEngine 部分会非常慢:“ArcEngineTestApp.exe 已触发断点”。
There is no further explaination in the Output window (see full output http://pastebin.com/f1iUnPXw). When I hit continue, the app continues loading symbols, but at least from now on it's definitly slower than in Visual Studio 2013. It takes VS 2015 15s to reach the breakpoint and 2:15m to complete the loading afterwards. VS 2013 shows the ArcEngine in 15-20s. See this screenshot for comparision (unfortunatly one can't copy the timestamp)
当我在消息上单击“中断”时,显示“wntdll.pdb 未加载”:
从 Microsoft 服务器加载 pdb 失败。
为了证明这一点,我们做了一个演示项目 https://1drv.ms/u/s!AmuX_SN-tDXsdOnTIy05zvopZXs(详细信息请参见下文)。
这仅在调试时发生。编译后的应用程序运行良好且快速。
我们已经尝试过但没有成功:
- 搜索“已触发断点”消息,但没有找到类似的问题。
- Deactivated settings known for performance problems (UI Debugging Tools for XAML, Diagnostics Tools, 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 http://pastebin.com/f1iUnPXw(从 ArcEngine 调用开始)。
要运行演示项目 https://1drv.ms/u/s!AmuX_SN-tDXsdOnTIy05zvopZXs,您需要有效的 ArcEngine 许可证和 ArcEngine SDK。由于许可原因,我们无法发布 ESRI dll。将它们复制到项目文件夹“ArcEngineTestLibs”中。
Debugging settings in Visual Studio 2015: