gpt4 book ai didi

c++ - Visual Studio 调试器监视问题

转载 作者:太空狗 更新时间:2023-10-29 23:46:09 26 4
gpt4 key购买 nike

如何在 visual studio 调试器监 window 口(或其他地方?)中找到堆栈上变量的地址

读取变量工作正常:

streets     streets [11790](0x1c66a690 [...] std::vector<Street *,std::allocator<Street *> >

但是前缀为 & 并没有给我一个地址:

&streets        streets [11790](0x1c66a690 [...] std::vector<Street *,std::allocator<Street *> >

此外,尝试读取尺寸也不起作用,这是为什么?

streets.size()  CXX0075: Error: Cannot set up Function Evaluation   

程序在 Debug模式下编译。

最佳答案

Visual Studio 调试器通过名为 autoexp.dat 的文件中的架构定义的转换来驱动调试器监视、快速监视、自动和局部变量 View (取决于您的 VS 版本,内容其中可能会有显着差异)。该文件位于您的 VS-InstallDir/Common7/Packages/Debugger 文件夹中(至少它适用于 VS2010 和 VS2012)。

了解这一点后,您可以尝试/考虑一些想法:

方法一:图书馆专有技术

要访问第一个元素的实际地址,我最终只是这样做:

streets._Myfirst

如果您知道要查看的元素数量,则可以通过以下方式使用数组扩展扩展:

streets._Myfirst,N

其中N是元素的个数

注意:这仅适用于如上所示的 vector 。做法因您使用的容器而异。毫无疑问,有更简单的方法可能不太依赖 std::vector<> 的实现,但这是我知道如何让您快速启动和调试的最简单方法。


方法二:焦土

在 Tools/Options/Debugging/General 下是您可以打开和关闭的功能列表。您会发现其中一个对这个问题特别有用:

Show raw structure of objects in variable windows.

打开此ON 以查看所有 结构和容器的原始成员变量,包括标准容器如std::vector<>。这有效地禁止使用 autoexp.dat

中的模板

关于c++ - Visual Studio 调试器监视问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13420650/

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