2015-12-21 63 views
1

我在Windows 7下使用MSVC 2013编译器,CDB调试器和Qt Creator/qmake。我刚刚发现我的项目之一的构建目录是高达16 千兆字节。罪魁祸首是名为“srv”的子目录,其中包含各种.pdb文件。好奇的是,对于各种系统库,如commctl32,ntdll,user32等,都有pdb文件。我真的需要为这些系统文件生成pdb,还是可以关闭一些设置,或者是否一个错误?我不打算调试user32.dll,所以我看不到任何理由为其生成调试信息。为什么我得到这么多.pdb文件?

+0

听起来像调试时从符号服务器拉出的文件的缓存目录。即使您不直接调试这些模块,这些符号也可用于生成堆栈跟踪。我对QtCreator不太熟悉,但可能会有一个设置,以便您可以将这些文件缓存在单个全局位置,以便您的所有QtCreator项目都将使用相同的缓存而不是单独的实例。如果它是一个缓存,你可以删除它,但调试器可能会在需要时通过互联网再次关闭它们。 –

+1

“我不打算调试user32.dll”不,但是您会计划知道程序崩溃的user32函数,对不对?这就是这些文件的用途。没有它们进行调试并不好玩。现代开发需要充足的磁盘空间 - 习惯它。 –

回答

4

没有生成commctl32,ntdll,user32的pdb文件(因为这些库不是由您编译的)。在调试应用程序以将内存地址解析为函数名称(即,准备可读的堆栈跟踪)时,会自动下载这些内容。

您可以在VS2013设置,调试,符号中进行配置。在那里你可以禁用自动下载和/或更改放置文件的文件夹。假设这也可以被禁用/配置为其他调试器。 “符号缓存”增长:无论何时安装Windows更新,新库都可能部署到您的计算机,并且在您的下一个调试会话中会下载新的符号。如果你有一个快速的互联网连接,清空缓存没有问题。