【问题标题】:Building as lib makes debug configuration much slower构建为 lib 使调试配置慢得多
【发布时间】:2020-12-13 03:53:22
【问题描述】:

我有一个项目在 VS2017 专业版,版本 15.9.7。 项目构建输出为 program.exe。

我已对其进行了重命名并对其进行了更改以创建静态库 program.lib。我保持 program.lib 的配置与我之前创建的 program.exe 的配置非常相似。 这里我们有旧 program.exe 和新 program.lib 的配置标志(请忽略我刚刚创建的路径):

/Yu"stdafx.h" /MP /GS- /W4 /Gy /Zc:wchar_t /I"...my includes" /Zi /Gm- /Od /Fd"Debug\vc141.pdb" /Zc:inline /fp:fast /D "USE_EIGEN" /D "EIGEN_FAST_MATH" /D "EIGEN_NO_AUTOMATIC_RESIZING" /D "VISUALSTUDIO=100" /D "_DEBUG" /D "WIN64" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /arch:AVX /Gd /MTd
/openmp /std:c++17 /FC /Fa"Debug\" /EHa /nologo /Fo"Debug\" /Fp"Debug\program.pch" /diagnostics:classic

这些是链接器的标志:

/OUT:"program.exe" /MANIFEST /NXCOMPAT /PDB:"program.pdb" /DYNAMICBASE "program.lib" "....my libs" /STACK:"32768"",32768" /DEBUG /MACHINE:X64 /OPT:REF /INCREMENTAL:NO /PGD:"program.pgd"/SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"program.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:"...my libpaths" /TLBID:1

然后我使用那个库只是为了创建一个新的 exe 程序 1.exe。我保留了与以前相同的配置标志。

一切正常,发布时内置的program1.exe的速度与program.exe的速度相同,但是如果我在Visual Studio的调试中运行新的program1.exe,它会慢得多,所以它是不再可用。因此在这种情况下,调试速度很重要。

释放速度保持不变。

为什么?

有什么让它更快的想法吗?

【问题讨论】:

  • 请提供minimal reproducible example。调试速度真的很重要吗?发布速度是不是也变慢了?
  • 是不是新建了一个exe工程,然后引用静态库程序,debug下发现速度慢了很多?您能提供一个小样品吗?
  • 你的VS2017版本是什么,企业版还是专业版?

标签: c++ visual-studio performance debugging visual-studio-2017


【解决方案1】:

一切正常,但如果我在调试中运行新的 program1.exe 视觉工作室要慢得多。

这很奇怪,您可以尝试以下步骤来解决您的问题:

1)关闭VS,删除解决方案文件夹下的.vs隐藏文件夹,binobj两个项目文件夹。

2)确保两个项目使用相同的平台和配置,例如X64/Debug

3)点击Tools下的Empty Symbol Cache选项-->Options-->调试-->符号,同时点击Load only specified modules

并尝试在工具-->选项-->调试-->常规下取消选中Enable Diagnostic Tools while debugging强>。

4)禁用工具-->扩展和更新下的任何第三方扩展,以防某些扩展导致此行为。

5)重置工具下的所有vs设置-->导入和导出设置-->重置所有设置 检查是否有一些晦涩的额外设置导致问题。而且你也可以在做之前做好备份。

另外,如果你的VS2017Enterprise,请取消勾选Tools下的Enable IntelliTrace选项 --> Options --> IntelliTrace

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 2014-03-21
    • 2010-12-10
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    相关资源
    最近更新 更多