在MSVS中,什么是符号以及为什么需要缓存它?

时间:2013-11-16 05:24:16

标签: visual-studio debugging symbols

在MSVS 2010中,如果转到Tools-> Options-> Debuggibg,将打开以下窗口。

我想知道这些符号是什么?为什么我们要缓存它?对于现在常见的500 GB硬盘而言,它是否太大了?

enter image description here

1 个答案:

答案 0 :(得分:1)

符号是在启用适当功能的情况下生成代码时生成的.pdb文件。这些文件提供了从二进制代码到为该二进制文件编写的实际语句的映射。

由于它们通常是从远程位置下载的,并且因为它们不会经常更改外部库,所以当您不必每次都下载这些文件时,它确实加快了调试速度。

在我的机器上,符号缓存大小约为600MB。您的500GB驱动器应该足以进行正常操作。

另请参阅:http://msdn.microsoft.com/en-us/library/windows/desktop/aa363368(v=vs.85).aspx

当您启用Framework Source Stepping时,此功能特别强大,这与Microsoft Symbol Server结合使用,允许您调试.NET框架的某些部分。这些符号是从Microsoft下载的,Visual Studio会从符号中读取要下载的源文件,以便为您调试。


在调试期间使用符号缓存来提供更丰富的信息。每个解决方案中都有一个类似的对话框,用于定义在构建解决方案期间生成的调试符号级别。这就是汇编程序/编译器被告知如何处理这些事情的地方。

enter image description here


在Team Build内部(如果您正在运行TFS),可以选择在自动构建过程中生成这些符号文件。然后可以从IntelliTrace或WinDbg引用这些文件,以便为您提供更丰富的调试体验,而无需将调试版本或调试符号部署到生产环境(将.pdb文件部署到生产环境会导致更高的内存使用率和较小的性能命中因为运行时会将这些符号加载到内存中。当异常发生时,它也会产生额外的开销,因为这些开销会使用符号文件中的信息进行丰富。

请参阅:http://msdn.microsoft.com/en-us/library/vstudio/hh190722.aspx