- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我是一名优秀的程序员,十分优秀!