【问题标题】:"myapp.exe has triggered a breakpoint" while debugging - afterwards slow symbol loading in Visual Studio 2015 Update 3调试时“myapp.exe 已触发断点” - 随后在 Visual Studio 2015 Update 3 中加载缓慢的符号
【发布时间】:2016-11-08 14:12:34
【问题描述】:

我们有一个 STA 模式的 C++ 项目,它打开一个 C#/WPF 库,该库通过 WindowsFormsIntegration 托管一个 ESRI ArcEngine MapControl。这在 Visual Studio 2013 中运行良好。由于我们切换到 VS2015 Update 3 启动 ArcEngine 部分,而调试(在调试和发布中)在 wntdll.pdb 中遇到神秘断点后速度非常慢:“ArcEngineTestApp.exe 已触发断点。”

“输出”窗口中没有进一步的说明(请参阅完整的output)。当我点击继续时,应用程序继续加载符号,但至少从现在开始它肯定比 Visual Studio 2013 慢。VS 2015 需要 15 秒才能到达断点,之后需要 2:15 米才能完成加载。 VS 2013 展示了 15-20 秒的 ArcEngine。请参阅此屏幕截图进行比较(不幸的是,无法复制时间戳)

当我点击消息中断时,会显示“wntdll.pdb not loaded”:

从 Microsoft 服务器加载 pdb 失败。

为了证明这一点,我们创建了一个demo project(详见下文)。

这仅在调试时发生。编译后的应用运行良好且快速。

我们已经尝试过但没有成功:

  • 搜索“已触发断点”消息,但未发现类似问题。
  • 已知因性能问题而停用的设置(XAML 的 UI 调试工具、诊断工具、IntelliTrace)
    • 在调试/符号中没有激活符号服务器
    • 没有安装已知会影响性能的 VS 扩展。 (完整列表见下文)
    • 尝试了不同的 ArcEngine 版本(10.3.1 和 10.4)
    • 从 MS 和 ESRI 符号服务器加载符号并在本地缓存它们。
    • 删除所有断点
    • 我完全重新安装了我的电脑。现在只安装了一个 Visual Studio (2015)
    • 在另一台 PC 上测试(安装了几个 VS)- 相同的行为

已安装扩展列表:

  • 用于桌面插件的 ArcObjects SDK 集成
  • ArcObjects SDK 集成实用程序
  • 开发者分析工具
  • 保存时格式化文档
  • Microsoft.NET Core 工具
  • Microsoft ASP.NET 和 Web 工具
  • Microsoft ASP.NET Web 框架和工具
  • Microsoft Azure 应用服务工具
  • Microsoft 连接服务
  • 适用于 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”中。

Visual Studio 2015 中的调试设置:

【问题讨论】:

  • 您是否禁用了“启用 .NET Framework 源代码步进”和“启用源服务器支持”调试选项?由于在VS2013中运行正常,可以在TOOLS->Options->Debugging下对比VS2015的设置。
  • @Jack Zhai 这两个选项在 VS 2013 和 2015 中都被禁用了。我将添加调试设置的屏幕截图。
  • 请禁用“要求源文件与原始版本完全匹配”和“Edie and Continue”,因为你说它是混合模式应用程序,请检查你的项目属性->配置属性->两个VS版本下的调试类型。根据输出信息,找不到pdb文件,所以最好开启微软符号服务器,调试时在Modules窗口手动加载符号。
  • @Jack 禁用这两个选项没有帮助。而且我已经尝试从 MS 和 ESRI 加载符号,这需要很长时间并且之后也无济于事。忘了提那个。我更新了问题。
  • 我更新了这个问题,更加关注断点,因为在那之后加载速度大大减慢。

标签: c++ debugging visual-studio-2015 arcobjects


【解决方案1】:

当我将调试/调试器类型中的 C++ 项目设置从“自动”更改为“仅托管”时,它再次像 VS 2013 一样快。仍然想知道为什么。

【讨论】:

  • 禁用tools->options->debugger settings下的“启用属性评估和其他隐式函数评估”设置,再次勾选。调试器类型将与您要调试的真实代码相关:msdn.microsoft.com/en-us/library/kcw4dzyf.aspx
  • 这真的应该是一个单独的问题或对您原始问题的编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多