Gre*_*ore 6 disassembly visual-studio
我正在使用Visual Studio 2008来追踪执行过程中的错误.我已加入该流程并确定了感兴趣的模块.(碰巧这个模块的调试符号已从pdb文件加载.)我想在Disassembly窗口中显示反汇编的代码,以便我可以决定在哪里设置断点.
当我中断该过程时,当前正在执行的模块将显示在"反汇编"窗口中.不幸的是,这不是感兴趣的模块.我无法弄清楚如何在不执行时显示感兴趣的模块的代码.
假设您正在调试非托管进程...
当您"调试/中断所有"时,请按照下列步骤操作:
选择"Debug/Windows/Modules"以获取所有已加载模块的列表.在"模块"窗口的"地址"列下,是该模块的内存范围.在反汇编窗口的"地址:"框中,键入模块的起始地址(确保在数字前添加0x)
您现在应该处于要玩的模块的开头.如果您知道函数的地址,则可以跳转到该地址.
这是一个例子:
运行sol.exe附加到进程,并中断所有.查看模块,找到"cards.dll",你会看到它加载到6fc10000(在我的机器上,无论如何).
在反汇编窗口中键入该地址(0x6fc10000),它将带您进入模块的开头.
现在说我想实际上跳转到一个函数.在Dependency Walker(depends.exe)中打开DLL以获取函数的偏移量.在我的例子中,我想在函数"cdInit"上设置断点.在Dependecny Walker中,它显示导出函数cdInit的偏移量为0x000013e6.因此,为了获得该功能,我将模块的起始地址(0x6fc10000)添加到偏移量(0x000013e6)以获得0x6fc113e6.
在反汇编框中输入这个地址确实会让我直接跳到该函数的开头.
| 归档时间: |
|
| 查看次数: |
7707 次 |
| 最近记录: |