gpt4 book ai didi

c++ - 项目在 Release模式下崩溃时如何获取函数名和行号

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:33 53 4
gpt4 key购买 nike

我有一个 C++/MFC 项目

当我在 Debug模式下运行它并且项目崩溃时我可以获得代码的功能和行号使用 SetUnhandledExceptionFilter 函数但在 Release模式下我无法获取它

我正在测试这个功能和来源

_set_invalid_parameter_handler msdn.microsoft.com/en-us/library/a9yf33zb(v=vs.80).aspx

StackWalker http://www.codeproject.com/KB/threads/StackWalker.aspx

MiniDumpReader & crashrpt http://code.google.com/p/crashrpt/

StackTracer www.codeproject.com/KB/exception/StackTracer.aspx

当项目在 Release模式下崩溃时获取功能和代码行的任何方式不需要 pdb 文件或映射文件或源文件?

最佳答案

PDB 文件旨在为您提供此信息;缺点是您不需要 PDB 文件。我可以理解不想将 PDB 发布给最终用户,但在那种情况下,您为什么要让他们看到堆栈跟踪信息?对我来说,你的目标是自相矛盾的。

从最终用户收集调试信息的最佳解决方案是通过小型转储,而不是在客户端拼凑堆栈跟踪。

所以,您有几个选择:

  1. 使用小型转储(理想且很常见)
  2. 发布 PDB(它不会包含比您已经尝试推断的信息更多的信息)
  3. 在您的应用中使用内联跟踪信息,例如 __LINE____FILE____FUNCTION__
  4. 如果您无法拼凑出有意义的堆栈跟踪,则只需捕获崩溃地址。

希望这对您有所帮助!

关于c++ - 项目在 Release模式下崩溃时如何获取函数名和行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6597369/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com