如果 .dll 中包含 .pdb(程序调试)文件,则行号将出现在引发的任何异常的堆栈跟踪中。这会影响应用程序的性能吗?
这个问题与发布与调试(即优化)无关。这是关于拥有 .pdb 文件的性能影响。每次抛出异常时都会读取 .pdb 文件吗?加载程序集时是否以某种方式缓存信息?或者是在第一次抛出相关异常时缓存?这有多大区别?
约翰罗宾斯在他的文章中写到了这一点PDB 文件会影响性能吗? https://www.wintellect.com/do-pdb-files-affect-performance/。简单的答案是否定的(如果您使用 /optimize+ 和 /debug 开关编译发布版本):
在其他操作系统上可能是这样,但在 Windows 上则不然。如果您认为他们这样做,那么为什么 Microsoft 在构建他们发布的每一个产品时都打开了调试和发布版本的 PDB 文件呢?他们编写了编译器,编写了链接器,还编写了操作系统,因此他们确切地知道效果是什么。与世界上任何其他软件公司相比,微软拥有更多关注性能的人员。如果有任何性能影响,他们就不会这样做。时期。在 Microsoft,性能并不是唯一的因素,而是一切。
此外:
当构建 /optimize+ 和 /debug 开关时,DebuggingMode.IgnoreSequencePoints 将传递给 DebuggableAttribute 以告诉 JIT 编译器它不需要加载 PDB 文件即可正确 JIT IL。
他还有另一篇文章,题为PDB 文件:每个开发人员必须了解的内容 https://www.wintellect.com/pdb-files-what-every-developer-must-know/这也是一本好书。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)