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