调试程序集时如何将内存地址转换为 VS2019 监视窗口中的用户定义类型?

bil*_*llw 5 c++ debugging x86 assembly visual-studio-2019

我正在尝试调试 exe 中的崩溃,其中我自己的代码位于 exe 正在加载的 dll 中。我在 exe 中有一个仅程序集调用堆栈,并设法追溯到我自己的代码并找到我想要调试的我自己的对象的地址。

但是,我似乎无法在监视窗口中将内存地址转换为我自己的类型:我只是得到“标识符“(我的类型)”未定义”。

我猜当我不在自己的代码堆栈中时,这是不可能的,但是如果我能以某种方式提供更多信息,调试器似乎可以知道类型。

我尝试了一些我自己的类型,但都给出了未定义的标识符。我还查看了我的类型的导出符号,看看是否有我可以使用的东西(基于另一个 SO 帖子中的建议),但是我认为 pdb 本身包含我需要将调试器指向的类型信息。

当然,我的 pdb 是为我自己的 dll 加载的,但是当没有相关的堆栈帧时,监视窗口似乎不想查看它。

Kje*_*nar 9

尝试指定您的 dll 的模块名称,例如 (yourDll.dll!mytype*)0x12345678

另见https://docs.microsoft.com/en-us/visualstudio/debugger/context-operator-cpp?view=vs-2019