- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我如何使用 WinDbg用于分析转储文件?
最佳答案
以下是一些可助您顺利进行的一般步骤:
首先,您必须更改编译器的设置,以便它创建 PDB 文件,即使对于发布版本也是如此。 Visual C++ 的更高版本编译器默认执行此操作,但在许多版本的 Visual C++ 中,您必须自己执行此操作。创建程序数据库文件,然后在每次构建应用程序时保存这些文件的存档。应用程序的每个构建都有自己的一组 PDB,这一点至关重要。例如,您不能仅重用与构建 10 相同的那些来检查构建 15 生成的转储。在项目的整个生命周期中,您最终会得到大量 PDB,因此请为此做好准备。
接下来,您需要能够识别生成转储文件的应用程序的确切版本。如果您正在创建自己的 MiniDump(例如通过调用 MiniDumpWriteDump()),可能最简单的方法是简单地将 MiniDump 的文件名的一部分作为应用程序的完整版本号。您需要有一个合理的版本编号方案才能使其工作。在我的商店中,每次自动构建器创建构建时,我们都会将所有分支的构建号加一。
现在您已经从客户那里收到转储文件,您知道创建转储的应用程序的准确版本,并且您已经找到了此构建的 PDB 文件。
现在,您需要查看源代码管理的历史记录并找到该软件的确切版本的源代码。最好的方法是在每次构建时将“标签”应用于分支。将标签的值设置为确切的版本号,在历史记录中就变得容易了。
您几乎已准备好启动 WinDbg/Visual C++:
c:\app_build_1.0.100
对于应用程序版本 1.0 build #100。 .symfix
.这可能需要一些时间,因为它会从 Internet 上下载大量内容。 .sympath+ c:\pdblocation
,用您放置 PDB 文件的任何位置替换路径名。确保您在那里得到加号,.sympath
之间没有空格。和 +
签名,否则你会搞砸第 3 步。.srcpath c:\app_build_1.0.100
用您从源代码管理中获取代码的路径替换此版本的软件。 !analyze -v
关于c++ - 如何使用 WinDbg 分析 VC++ 应用程序的故障转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/734272/
我正在为我的应用程序使用 Tank-Auth。我唯一的问题是激活和重置帐户密码。 用于登录、注册、注销;我对这些代码没有问题; $route['login'] = "/auth/login"; $ro
我是一名优秀的程序员,十分优秀!