将软件发送到客户端时,是否应将调试符号(.PDB)捆绑在一起?如果客户端发现软件中存在错误或漏洞,那么完整的堆栈跟踪(如果可能的话,还有内存转储)对于供应商的再现非常有帮助。
为客户提供调试符号的优缺点是什么?
答案 0 :(得分:5)
客户端不需要调试符号来向供应商发送故障转储。像Windows Error Reporting这样的自动化系统使客户端可以向供应商报告故障转储,甚至无需知道崩溃转储是什么。客户端总是可以手动向您发送内核崩溃转储或用户模式minidump。您需要保留发布版本的PDB以进行任何事后调试。
客户端不需要调试符号来报告堆栈跟踪。如果未启用frame pointer omission,则客户端计算机的堆栈跟踪应足够完整,以便您可以使用调试符号或映射文件对其进行解码。
答案 1 :(得分:1)
我个人喜欢带有所有调试符号的软件。有时,只有在客户端环境中才会发现错误。
但是,在内存空间非常宝贵的嵌入式环境中,我可以看到没有调试符号的运输。
答案 2 :(得分:1)
通常.pdb文件不会发送到客户端,但应该为开发人员公司中的每个已发布版本保留它们。拥有这些文件,您可以从客户端计算机调试压缩转储。
重要说明:对于Microsoft项目,不可能只重建相同的源代码并使用构建中的.pdb文件。 .pdb文件应与构建版本时创建的文件相同。 Microsoft使用UID来匹配exe和.pdb文件,如果没有匹配,则不会加载调试符号。
将.pdb文件发送到客户端是无害的,但也没用,除非您可以直接在客户端计算机上进行调试。