是否有任何理由不在安装程序中包含pdb文件?我有C++日志记录功能,可以浏览堆栈并报告行号和文件名。如果我的客户可以向我发送包含此信息的日志,那将是非常好的。但是,他们需要pdb文件。是否有任何缺点(安装程序包大小除外)来部署它们?在安装程序中包含pdbs?
回答
两种可能的缺点:
- PDB文件可能会使人更容易进行逆向工程应用程序。
- 由于以前的结果,有人可能会期望能够在您的DLL中调用未公开的函数。
如果那些不打扰你,我看不出任何缺点。请注意,你并不需要这个。正如John Seigel所说,你应该能够从崩溃转储中重建堆栈跟踪。
我也抓取垃圾箱,但我有一些可处理的“未处理的消息”。我有一个顶级循环,迭代是完全独立的。所以它完全有可能一次迭代爆炸,并且所有其他迭代都可以提供出色的信息。在这种情况下,我不想抓取一个小型转储器,以防上百次迭代都爆炸,但我仍然需要一种获取信息的方法。感谢您的建议。 – Steve 2010-05-28 12:04:19
您应该可以在没有PDB文件的情况下实现“行号和文件名”。尝试使用_FUNCTION_,_LINE_和_FILE_。在这里阅读更多:
那不会给你造成问题的途径,只有问题的位置。我正在处理15-20种可能的方法。只有其中一些会导致问题。可悲的是,这些问题似乎在客户端出现。我在异常信息中使用这些宏,但是 – Steve 2010-05-28 12:01:31
您是否使用过“StackWalk64”?我不认为它需要PDB文件: http://msdn.microsoft.com/en-us/library/ms680650(VS.85).aspx – 2010-05-28 16:43:15
我使用stackwalk64,但如果你想要func名称,地址和行号你需要的PDB。否则,您只需获取已执行指令的地址 – Steve 2010-05-29 06:06:32
相反出货PDB文件,你的错误处理代码可以创建小型转储。请参阅功能MiniDumpWriteDump。 Minidumps非常小,可以通过电子邮件轻松发送。 如果您从客户处获得转储文件,则只需要PDB文件。恕我直言,在你的应用程序中捕获断言或意外错误是一个非常好的主意,自动创建一个小型转储并让你的应用程序发送这个转储给你。如果你真的很喜欢,你建立一个自动化的错误跟踪数据库,其中存储这些小型转储。然后,您可以找出哪些错误是最常见的,需要先修复。无意中,您会发现很多关于您的应用程序运行的环境。哪些操作系统版本是最常见的,哪些病毒扫描程序挂钩到您的应用程序等。
显然,这需要您的用户的同意,因为小型转储可能包含私人信息(但是堆栈中的信息很少)。实现可捕获堆栈溢出异常的工作错误处理程序并不是微不足道的。
- 1. 在AIR安装程序中包含.exe
- 2. 在安装程序中包含PyQt
- 3. 在安装程序包中包含链接的DLL - Visual Studio 2010
- 4. WiX安装程序包含msi的dll
- 5. OSX安装程序包:如何在安装程序中选择安装语言?
- 6. 如何使用wix在msi安装程序中包含文件?
- 7. 在UppercuT中包含winforms安装程序code_drop
- 8. 在MSI安装程序中包含帮助文件
- 9. .NET安装包安装程序
- 10. 如何分发包含引导程序的安装程序
- 11. 在将文件包含在安装程序包中之前复制文件NSIS
- 12. 请安装包:'Xamarin.Android.Support.Animated.Vector.Drawable'在SDK安装程序中可用
- 13. iexpress安装程序包
- 14. 安装的R程序包
- 15. Windows安装程序包
- 16. Windows安装程序msi包
- 17. 安装的R程序包
- 18. 启动包安装程序
- 19. 自包含安装程序(在Windows上)如何工作?
- 20. 程序包安装程序已停止
- 21. 包安装程序崩溃安装我的应用程序
- 22. 不包括使用symfony安装程序的symfony安装程序
- 23. Web平台安装程序中包含的程序是否全部免费?
- 24. 包装程序包含unistd.h的写入()包含错误结果
- 25. 在bower安装后不能在ngularjs应用程序中包含ngMessages模块
- 26. 在安装/安装程序包期间注册
- 27. 应用程序包安装程序在安装时意外停止
- 28. 什么安装程序包含Microsoft Business Intelligence Development Studio 2008?
- 29. Web平台安装程序不包含管理服务
- 30. 包含GPL二进制文件的安装程序
IIRC,有一种让Windows记录客户可以发送给您的崩溃转储文件的方法,然后您只需在Visual Studio中打开它,然后直接转到带有堆栈跟踪和所有内容的源代码。没有部署.pdb的。不过,我不记得我在哪里看到了。 – 2010-05-28 01:08:34