客户是否可以访问调试符号以进行错误报告?

时间:2010-08-21 04:48:59

标签: c++ debugging

将软件发送到客户端时,是否应将调试符号(.PDB)捆绑在一起?如果客户端发现软件中存在错误或漏洞,那么完整的堆栈跟踪(如果可能的话,还有内存转储)对于供应商的再现非常有帮助。

为客户提供调试符号的优缺点是什么?

3 个答案:

答案 0 :(得分:5)

客户端不需要调试符号来向供应商发送故障转储。像Windows Error Reporting这样的自动化系统使客户端可以向供应商报告故障转储,甚至无需知道崩溃转储是什​​么。客户端总是可以手动向您发送内核崩溃转储或用户模式minidump。您需要保留发布版本的PDB以进行任何事后调试。

客户端不需要调试符号来报告堆栈跟踪。如果未启用frame pointer omission,则客户端计算机的堆栈跟踪应足够完整,以便您可以使用调试符号或映射文件对其进行解码。

答案 1 :(得分:1)

我个人喜欢带有所有调试符号的软件。有时,只有在客户端环境中才会发现错误。

但是,在内存空间非常宝贵的嵌入式环境中,我可以看到没有调试符号的运输。

答案 2 :(得分:1)

通常.pdb文件不会发送到客户端,但应该为开发人员公司中的每个已发布版本保留它们。拥有这些文件,您可以从客户端计算机调试压缩转储。

重要说明:对于Microsoft项目,不可能只重建相同的源代码并使用构建中的.pdb文件。 .pdb文件应与构建版本时创建的文件相同。 Microsoft使用UID来匹配exe和.pdb文件,如果没有匹配,则不会加载调试符号。

将.pdb文件发送到客户端是无害的,但也没用,除非您可以直接在客户端计算机上进行调试。