【问题标题】:How to disable symbol loading when debugging a Visual C++ program?调试 Visual C++ 程序时如何禁用符号加载?
【发布时间】:2010-09-18 06:20:17
【问题描述】:

我使用的是 Visual Studio 2008。我不需要在我的项目中调试一些 DLL,那么我可以在调试 Visual C++ 程序时禁用符号加载吗?调试时是否有助于加快启动时间?

符号都是本地的,所以我没有那些加载慢的问题,只是想让调试越来越快。

例如,我正在使用 Qt 库,当我点击“开始调试”时,输出窗口显示 Qt 库的符号已加载。如果 VS 可以停止加载这些符号,调试启动时间应该会更快。当然,我仍然希望 VS 为我的可执行文件加载符号。

【问题讨论】:

    标签: debugging visual-c++ qt


    【解决方案1】:

    刚刚发现 Visual Studio 2010 确实可以满足我的要求。

    仅加载可执行文件的符号,而不加载其他符号(例如:DLL):

    1. 转到工具->选项->调试->符号
    2. 点击“仅指定模块”
    3. 清除“始终加载位于模块旁边的符号”
    4. 点击“指定模块”
    5. 点击新图标
    6. 输入您的可执行文件名(例如:my-awesome-app.exe)

    还发现 Visual Studio 2010 在调试时似乎比 Visual Studio 2008 执行得更好。至少 IDE 布局在调试停止时切换回来的速度更快。

    【讨论】:

    • 终于有东西了。第 3 步非常重要。
    【解决方案2】:

    我不确定您所说的“启动”是什么意思。我假设您正在谈论实际应用程序的启动。无论您以何种模式启动目标应用程序,启动目标应用程序的时间都很昂贵。在 Release 中它可能会更少,但可以忽略不计。

    关闭其他解决方案中提到的所有符号路径是一个可行的选择。但是,如果您不想要已启动的应用程序的符号,我不确定您为什么要调试。如果没有应用程序符号,您将无法在调试时看到您在源代码中的位置。

    如果您正在寻找更快的调试体验,您可以使用WinDbg。它带有 Windows SDK,但也可以单独下载。 If 是比 Visual Studio 更快的 UI,但如果您对 GUI 更熟悉,使用起来会更加麻烦。 WinDbg 使用命令来执行几乎所有任务,但您可以进行一些出色的调试,并且在许多情况下它比 Visual Studio 更快。如果您想调试 C++\CLI 或任何托管应用程序(例如 C#),我会坚持使用 Visual Studio。 WinDbg 中有一个扩展名为SOS,但它需要一些高级调试经验才能正确使用。

    【讨论】:

    • 使用 WinDbg 获得的调试器性能很可能会超过继续使用完整 IDE 对 OP 的生产力优势。 WinDbg 有它的位置——我仍然使用它来对本地代码中的讨厌的错误进行事后调试,例如堆栈溢出或损坏,其中 IDE 抛出它的手或完全爆炸——但在 99% 的情况下,VS 对本地 C++ 来说就很好,因为以及托管代码。
    • 我的意思是在 Visual Studio 中点击“开始调试”时的开始时间。我想调试我的应用程序,但不是它加载的 DLL,例如 Qt 库。也许我应该在调试时尝试使用库的发布版本。
    • 如果您想缩短启动时间,请删除相关库的符号。在这种情况下,符号文件 (pdbs) 可能就在 Qt 库二进制文件旁边。删除它们,它们将不会被加载。二进制文件的构建类型不会在很大程度上增加您的调试启动时间。
    • 我实际上尝试更改为使用 Qt 库的发布版本,因此 VS 甚至不尝试查找 pdb 文件(尽管它在加载 DLL 时在输出窗口中抱怨)。它有效,但我不知道我可能会遇到什么副作用。
    • 它确实会尝试加载它们,这就是它抱怨的原因。除了无法调试到相关库之外,没有其他副作用。
    猜你喜欢
    • 2014-02-05
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    相关资源
    最近更新 更多