gpt4 book ai didi

visual-studio - Visual Studio 2008 : How to view disassembled code for a DLL that is not executing at the moment

转载 作者:行者123 更新时间:2023-12-04 15:05:10 24 4
gpt4 key购买 nike

我正在使用 Visual Studio 2008 来追踪执行过程中的错误。我已附加到该过程并确定了感兴趣的模块。 (碰巧这个模块的调试符号是从 pdb 文件中加载的。)我想在反汇编窗口中显示反汇编代码,以便我可以决定在哪里设置断点。

当我中断进程时,当前正在执行的模块显示在反汇编窗口中。不幸的是,这不是感兴趣的模块。我不知道如何在感兴趣的模块不执行时显示它的代码。

最佳答案

假设您正在调试一个非托管进程......

当您“调试/中断所有”时,请按照下列步骤操作:

选择“Debug/Windows/Modules”以获取所有已加载模块的列表。
在模块窗口的“地址”列下是该模块的内存范围。
在反汇编窗口的“地址:”框中,输入模块的起始地址(确保在数字前添加 0x)

您现在应该处于要玩的模块的开头。如果你知道一个函数的地址,你可以直接跳转到那个地址。

这是一个例子:

运行 sol.exe
附加到过程中,并打破一切。
查看模块,找到“cards.dll”,您会看到它在 6fc10000 处加载(无论如何,在我的机器上)。

在反汇编窗口中键入该地址(0x6fc10000),它将带您进入模块的开头。

现在说我想实际跳转到一个函数。在 Dependency Walker (depends.exe) 中打开 DLL 以获取函数的偏移量。在我的示例中,我想在函数“cdInit”上设置一个断点。在 Dependecny Walker 中,它显示导出函数 cdInit 的偏移量为 0x000013e6。因此,要使用该函数,我会将模块的起始地址 (0x6fc10000) 添加到偏移量 (0x000013e6) 以获得 0x6fc113e6。

在反汇编框中输入这个地址确实让我直接跳到了那个函数的开头。

关于visual-studio - Visual Studio 2008 : How to view disassembled code for a DLL that is not executing at the moment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2155218/

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