pdb(Program Debug DataBase)的用法是什么?
在编译库或应用程序(例如Visual Studio IDE中的控制台应用程序)时,在应用程序的Debug文件夹中,除了.dll或.exe之外,还会有一个扩展名为“.pdb”的文件。
这个.pdb文件的确切用法是什么?
PDB包含调试符号,因此您可以将已编译的二进制文件发送给客户,而不会将源代码算法和其他私有详细信息暴露给客户。
如果您的应用程序在客户站点出错,您可以从他们那里获得崩溃转储(使用DrWatson),将其带回您的开发工作站并调试崩溃,调试器将使用符号文件与崩溃一起向您展示源代码,数据结构等。在许多情况下,您所要做的就是打开崩溃转储,调试器将直接带您到exception的源代码,并向您展示变量和线程。
这是他们的主要用途,当客户报告崩溃时,它们是非常宝贵的。 关于使用它们你需要知道的事情 – 它们只对创建它们的构建有效,因此如果你重新编译,你的符号文件就会毫无价值。
John Robbins有一篇很好的文章,为什么要使用它们。
John Robbins最近写了一些关于PDB的非常好的文章:
- http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspx
- http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/26/visual-studio-remote-debugging-and-pdb-files.aspx
- http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/08/22/how-many-secrets-do-net-pdb-files-really-contain.aspx
- http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/29/keeping-specific-pdb-files-from-loading-in-the-debugger.aspx
- http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/06/19/do-pdb-files-affect-performance.aspx
- http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/08/31/correctly-creating-native-c-release-build-pdbs.aspx
当您想要进行远程调试时,PDB也很有用。
将PDB与已安装的应用程序保持在一起,可以将Visual Studio远程连接到客户端的生产环境,并在必要时调试应用程序。
PDB允许调试应用程序,例如,当它们崩溃或者你有一个小型转储器时。 它们还允许您在将exception输出到日志记录时查找有关错误的更多详细信息(它们将使用行号提供更完整的堆栈跟踪,而不是仅显示发生错误的函数的名称)。
那么你已经给自己一个很大的线索了。
这是Visual Studio需要能够调试应用程序的文件。
此MSDN页面包含更多信息。
程序数据库(PDB)文件保存调试和项目状态信息,允许增量链接程序的Debug配置。
据我所知,它们包含调试信息,如行号,变量名等。