gpt4 book ai didi

c++ - Visual Studio - 调用堆栈不会追溯到用户函数

转载 作者:行者123 更新时间:2023-11-28 07:33:17 26 4
gpt4 key购买 nike

在 visual studio 2010 中遇到一些访问冲突,调用堆栈如下: enter image description here

大部分调用堆栈是dll中的汇编代码(我几乎无法辨认)。我想追溯到我的代码中导致违规的行,但调用堆栈中似乎没有用户函数。

如何在我的函数中找到导致违规的行?我需要调整一些设置吗?

最佳答案

从优化的 C 或 C++ 代码中获取可靠的堆栈跟踪很困难。优化器选择速度而不是可诊断性。调试器需要此类代码的 PDB 文件,以了解如何正确解释堆栈帧并找到调用方法的返回地址。

显然您没有这些 PDB,您从操作系统 DLL 中获取原始地址而不是它们的函数名称。获取这些 PDB 非常简单,Microsoft 有一个公共(public)服务器,它只为任何已发布的 Windows 版本提供这些 PDB,包括服务包和安全更新。

需要告知调试器有关该服务器的信息,默认情况下该功能处于关闭状态。对于 VS2010 特别容易,服务器名称已预先编程在对话框中,您只需将其打开即可。 Tools + Options,Debugging,Symbols,勾选“Microsoft Symbol Servers”前面的复选框。设置缓存目录,任何可写的目录都可以。

重新开始调试,开始缓存PDB需要一段时间。完成后,您会看到一个大大改进的堆栈跟踪。准确且带有 Windows DLL 的函数名称。

关于c++ - Visual Studio - 调用堆栈不会追溯到用户函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17231693/

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