将软件交付给客户端时,是否应该将调试符号(.PDBs)与其捆绑在一起?如果客户端发现软件中的错误或漏洞,完整的堆栈跟踪(如果可能的话,还有内存转储)将对供应商重现它非常有帮助。
给客户端提供调试符号的利弊是什么?
发布于 2010-08-21 13:28:51
客户端不需要调试符号来向供应商发送崩溃转储。像Windows Error Reporting这样的自动化系统使客户可以向供应商报告崩溃转储,甚至不必知道崩溃转储是什么。而且客户端总是可以手动发送内核崩溃转储或用户模式小型转储。您确实需要保留用于您的发布构建的PDB,以便进行事后调试。
客户端不需要调试符号来报告堆栈跟踪。如果不启用frame pointer omission,则来自客户机的堆栈跟踪应该足够完整,以便您可以使用调试符号或映射文件对其进行解码。
发布于 2010-08-21 13:09:44
我个人喜欢发布带有所有调试符号的软件。有时,只在客户端的环境中发现错误。
但是,在内存空间非常紧张的嵌入式环境中,我可以看到无需调试符号就可以发布。
发布于 2010-08-21 13:40:57
通常情况下,.pdb文件不会发送到客户端,但对于开发者公司中发布的每个构建,都应该保留它们。有了这些文件,您就可以从客户端计算机调试crush转储。
重要提示:对于微软项目,仅仅重建相同的源代码并使用构建中的.pdb文件是不可能的。.pdb文件应该与构建版本时创建的文件相同。微软使用UID来匹配exe和.pdb文件,如果不匹配,则不加载调试符号。
将.pdb文件传送到客户端是无害的,但也是无用的,除非您可以直接在客户端计算机上进行调试。
https://stackoverflow.com/questions/3536370
复制相似问题