Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ VS Studio Debugger-获取(并查看)类型的所有实例_C++_Visual Studio_Visual Studio Debugging - Fatal编程技术网

C++ VS Studio Debugger-获取(并查看)类型的所有实例

C++ VS Studio Debugger-获取(并查看)类型的所有实例,c++,visual-studio,visual-studio-debugging,C++,Visual Studio,Visual Studio Debugging,对于给定的堆栈帧,是否有一种快速的方法(或构造方法的简单方法)来获取给定堆栈帧(堆栈和堆变量)的特定类/类型的所有实例?我希望在不更改任何源代码的情况下执行此操作——附加功能仅来自VS/VS调试器 我设想,在对整个大型代码库中使用的数据类型进行更改时,这种行为将非常有用。Heap Manager 从C++运行时透视图中,堆管理器通过签名是 LPVOID WINAPI HeapAlloc( _In_ HANDLE hHeap, _In_ DWORD dwFlags, _In_ SIZ

对于给定的堆栈帧,是否有一种快速的方法(或构造方法的简单方法)来获取给定堆栈帧(堆栈和堆变量)的特定类/类型的所有实例?我希望在不更改任何源代码的情况下执行此操作——附加功能仅来自VS/VS调试器

我设想,在对整个大型代码库中使用的数据类型进行更改时,这种行为将非常有用。

Heap Manager

从C++运行时透视图中,堆管理器通过签名是

LPVOID WINAPI HeapAlloc(
  _In_ HANDLE hHeap,
  _In_ DWORD  dwFlags,
  _In_ SIZE_T dwBytes
);
因此,如果堆管理器分配内存,它将分配大量的字节,而不是类型的内存

至少对于堆上的对象来说,一件有用的事情(不是VisualStudio)是启用GFlags的“用户模式堆栈跟踪数据库”。启用该选项后,它将跟踪堆上的分配并将其与堆栈关联。这样,您仍然无法看到类型信息,但至少可以找到分配内存的方法。在小方法中,您可以从dwBytes信息中找到它是哪种类型,但仍然需要手动执行

调试堆管理器 如果有调试生成,可以使用来帮助跟踪分配

然而,这并非完全没有源代码更改。您需要导入调试头

Visual Studio 2013更新2 自VisualStudio2013更新2以来,有一个新版本,它甚至允许您跟踪丢失的对象类型

它是通过分析PDB来实现的,对于PDB不可用的库,它会失败