C++ VS Studio Debugger-获取(并查看)类型的所有实例
对于给定的堆栈帧,是否有一种快速的方法(或构造方法的简单方法)来获取给定堆栈帧(堆栈和堆变量)的特定类/类型的所有实例?我希望在不更改任何源代码的情况下执行此操作——附加功能仅来自VS/VS调试器 我设想,在对整个大型代码库中使用的数据类型进行更改时,这种行为将非常有用。Heap ManagerC++ 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
从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不可用的库,它会失败