【问题标题】:How can I keep symbols loaded that don't change如何保持加载的符号不变
【发布时间】:2011-12-27 15:46:11
【问题描述】:

我正在尝试加快插件的调试迭代速度。主机应用程序非常大,操作系统和主应用程序有数百个符号。只有一个 .dll 和一个 .pdb 更改,但似乎必须根据需要从磁盘重新加载每个符号。在我达到断点之前的启动时间几乎是五分钟。在发行版中运行应该不到一分钟。

我已经尝试过的事情:

  • 删除其他未使用的 .dll :有帮助但不可预测的结果
  • 编辑并继续:这在过去“很棒”。它在此版本的主机应用程序中不起作用。这可能是由于产品部分的某些 .net c++/cli 包装器(与我正在使用的部分无关)
  • 不使用符号:对于 60% 的情况来说,调试体验不是很好。
  • 让程序运行,只需卸载我的 .dll: 不支持,因为依赖项是不可预测的。

对加快我的工作流程有什么建议吗?

规格:

  • 操作系统: Windows 7 64 位
  • IDE/调试器:visual studio 2010 sp1
  • 语言: c++
  • crt 版本: 有时为 v90,有时为 v100,具体取决于宿主应用程序的版本。
  • 使用 ms 符号服务器:
  • 编辑并继续:损坏
  • 应用程序启动时间: 4-5 分钟
  • 模块窗口总数: 589!

【问题讨论】:

  • 我还检测到大约 20 秒的时间用于为另一个没有 pdb 仅导出的插件(我有时需要)加载符号。

标签: c++ debug-symbols visual-studio-debugging


【解决方案1】:

使用 Ramdisk 并在其上存储经常访问的符号。

【讨论】:

  • 我可能会尝试这个来综合我想要的结果。我不确定问题是从磁盘加载文件还是内存中的其他转换。
【解决方案2】:

你可以尝试一些其他的事情

  1. 声明一个名为_NO_DEBUG_HEAP=1 的环境变量。 Very useful for a large application 进行大量堆分配
  2. 默认情况下避免加载 MS 符号。您只需要偶尔使用一次,在这种情况下,我只需在调用堆栈窗口中单击鼠标右键,然后选择 Load symbols from -> Symbol Path or Microsoft Symbol server
  3. 看看是否可以升级到 SSD 硬盘。

【讨论】:

    猜你喜欢
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    相关资源
    最近更新 更多