什么是符号化调用堆栈?

What is a symbolized call stack?

我一直在 Visual Studio 2010 年开发一个应用程序 (Windows),但遇到了崩溃。因此,同样我向专家寻求帮助,他让我提交一个符号化的崩溃调用堆栈。任何人都可以向我解释这个符号化的调用堆栈到底是什么以及如何从 VS 中获取它。我正在构建的应用程序正在使用 CEF(Chromium 嵌入式框架)。我已下载二进制文件并根据需要对其进行修改。

它有函数名(最好是文件名和行号)而不是普通的十六进制地址。

如果您的构建有调试符号,您在 Visual Studio 调试器的调用堆栈 window 中获得的调用堆栈应该被符号化。

我认为他要求的是带有可用符号的调用堆栈(而不是像这样的调用偏移量 - libcef.dll!11357796() 未知)。

假设您正在使用 CEF 的二进制分发版进行开发,请返回 https://cefbuilds.com/ 并找到您使用的分发版和确切的内部版本号。在该行的末尾,您将看到额外的 link 用于调试或发布符号。下载这些,如果压缩了就解压。

现在回到您的 Visual Studio 项目,运行 直到您遇到崩溃。双击未解析的符号之一,如 "libcef.dll!11357796() Unknown"。您将看到一个对话框,要求您找到调试符号文件。导航到您在上一步中提取 pdb 文件的位置,它应该可以找到符号。然后它将尝试加载源文件,除非您下载了 CEF 和 Chromium 源,否则您没有该文件,但您不需要它用于符号堆栈轨道。只需取消,在您的调用堆栈中,您现在应该可以看到所有 libcef 的符号。复制并粘贴并传递给帮助您的人。