为什么调用堆栈不显示以前的调用?

tmi*_*hty 2 c++ callstack visual-studio-2022

在我的 VS2022 C++ 项目中,一段时间后出现问题。因为错误仅在 10 分钟后发生,所以我需要检查调用堆栈以查看错误发生之前发生了什么。

但是,调用堆栈太小。

它只是显示了这一点:

在此输入图像描述

我已经手动设置断点来跟踪它,所以我知道在“ProcessTxtLine”之前有几个我自己的函数(显示在调用堆栈中),但在调用堆栈中它们不存在。所以我无法双击它们来快速到达那里。

因为我不知道还有什么可能是重要的,所以我发布了整个 VS 2022 窗口的屏幕截图。

谢谢。

在此输入图像描述

编辑:

根据建议,我单击了第一个条目,然后选择了“加载符号”。

然而,这并没有帮助。它确实显示了更多,但仍然不是“我的”呼叫。

在此输入图像描述

Chr*_*ial 6

调用堆栈中的消息是相关提示:您需要加载更多调试符号才能正确显示调用堆栈。您可以右键单击调用堆栈中的第一个条目(该KernelBase.dll...行)并选择“加载符号”。您可能需要加载比这更多的模块的符号,但是您应该会收到新消息来告诉您这一点。

此问题是 32 位应用程序特有的。由于 32 位调用约定的工作方式,如果没有所有最顶层堆栈条目的调试符号,就不可能生成调用堆栈。如果您将应用程序编译为 64 位,这个问题就会消失。