在 VS 2012 中调用 CoCreateInstance 期间符号加载缓慢
Posted
技术标签:
【中文标题】在 VS 2012 中调用 CoCreateInstance 期间符号加载缓慢【英文标题】:Slow loading of symbols during call to CoCreateInstance in VS 2012 【发布时间】:2015-07-08 15:38:52 【问题描述】:在我的 MFC 项目中,我有时会调用 CoCreateInstance
:
if ( SUCCEEDED( CoCreateInstance ( CLSID_DragDropHelper, NULL,
CLSCTX_INPROC_SERVER,
IID_IDropTargetHelper,
(void**) &m_piDropHelper ) ))
...
稍后,一旦我完成了DragDropHelper
,我就会打电话给Release
:
m_piDropHelper->Release();
到目前为止一切顺利,一切正常。
但在调试过程中,第一次调用 CoCreateInstance
非常慢,因为 VS 正在加载大量符号(此加载在 VS 输出窗口中可见,见下文)。随后对同一CoCreateInstance
的调用速度很快。但是当我重新启动调试器时,对这个CoCreateInstance
的第一次调用又变慢了。
我不需要这些符号。
有没有办法阻止 Visual Studio 加载所有这些符号。
调试时输出窗口的部分内容
'MyProg.exe': Loaded 'C:\Windows\SysWOW64\WindowsCodecs.dll', Symbols loaded (source information stripped).
'MyProg.exe': Loaded 'C:\Windows\SysWOW64\apphelp.dll', Symbols loaded (source information stripped).
'MyProg.exe': Loaded 'C:\Program Files (x86)\Common Files\TortoiseOverlays\TortoiseOverlays.dll', Cannot find or open the PDB file.
'MyProg.exe': Loaded 'C:\Program Files\TortoiseGit\bin\TortoiseGitStub32.dll', Cannot find or open the PDB file.
'MyProg.exe': Loaded 'C:\Program Files\TortoiseGit\bin\TortoiseGit32.dll', Cannot find or open the PDB file.
'MyProg.exe': Loaded 'C:\Program Files\TortoiseGit\bin\libgit232_tgit.dll', Cannot find or open the PDB file.
'MyProg.exe': Loaded 'C:\Program Files\TortoiseGit\bin\zlib132_tgit.dll', Cannot find or open the PDB file.
'MyProg.exe': Loaded 'C:\Windows\SysWOW64\msvcr120.dll', Symbols loaded.
'MyProg.exe': Loaded 'C:\Windows\SysWOW64\ws2_32.dll', Symbols loaded (source information stripped).
<30 more similar lines>
'MyProg.exe': Unloaded 'C:\Program Files (x86)\Microsoft Office\Office14\GROOVEEX.DLL'
'MyProg.exe': Loaded 'C:\Program Files (x86)\Microsoft Office\Office14\GROOVEEX.DLL', Cannot find or open the PDB file.
'MyProg.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\msvcr90.dll', Symbols loaded (source information stripped).
'MyProg.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\msvcp90.dll', Symbols loaded (source information stripped).
'MyProg.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.atl_1fc8b3b9a1e18e3b_9.0.30729.6161_none_51cd0a7abbe4e19b\ATL90.dll', Symbols loaded (source information stripped).
'MyProg.exe': Loaded 'C:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\Cultures\OFFICE.ODF', Cannot find or open the PDB file.
'MyProg.exe': Loaded 'C:\Program Files (x86)\Microsoft Office\Office14\1036\GrooveIntlResource.dll', Cannot find or open the PDB file.
'MyProg.exe': Loaded 'C:\Windows\SysWOW64\RpcRtRemote.dll', Symbols loaded (source information stripped).
【问题讨论】:
您是否尝试过使用工具/选项/调试/符号来排除您不想要的符号?有两种方法可以从该对话框加载符号。 forums.codeguru.com/… @HansPassant 我不太确定你提到的讨论主题与我的问题有什么关系。还是谢谢。 【参考方案1】:您可以使用工具/选项/调试/符号来包含/排除符号。
“自动加载符号:”的两个选项应该提供您想要的。
【讨论】:
以上是关于在 VS 2012 中调用 CoCreateInstance 期间符号加载缓慢的主要内容,如果未能解决你的问题,请参考以下文章