首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制WinDbg加载卸载模块的符号

强制WinDbg加载卸载模块的符号
EN

Stack Overflow用户
提问于 2012-06-11 11:44:40
回答 2查看 26.7K关注 0票数 21

我正在调试一个模块,其中只有.exe和没有私有符号的.pdb。

在调试会话期间,我需要检查内部结构。显然,这个结构没有出现在PDB中,因为它是私有的,但幸运的是,我有一个.h文件,其中定义了这个结构。因此,我可以构建一些使用此结构的虚拟模块,并获得包含此结构的PDB文件。

现在,我有了一个带有结构符号的卸载模块,我希望加载它的符号,以便向该结构施加一些内存。(当然,在没有卸载原始.exe的情况下,我正在调试)

问题: WinDbg似乎只允许加载加载模块的符号.

我的问题是:是否有一种简单的方法可以从卸载模块加载符号?

我试过.reload /i /f MyDll.dll,但我总是能得到...MyDll.dll - unmatched

设置符号路径没有帮助。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-12 20:04:30

你可以强迫windbg在一个特定的地址加载符号。

代码语言:javascript
复制
0:000> .reload /f /i MyDll.dll=77777777
    c:\sym\MyDll.pdb - unmatched
0:000> lm
start             end                 module name
00000000`55555555 00000000`55555555   notepad    (no symbols)
00000000`77530000 00000000`7762a000   USER32     (deferred)
00000000`77777777 00000000`77777777   MyDll_77777777   (private pdb symbols)  c:\sym\MyDll.pdb

这里不匹配的警告是因为windbg无法判断符号是否与模块的正确版本相匹配,因为它不能找到时间戳或校验和。

票数 22
EN

Stack Overflow用户

发布于 2013-09-09 07:29:12

一个更好的方法是.reload /unl MyDll.dll

卸载模块列表包含时间戳(用于图像/pdb匹配)和图像基地址。使用/unl告诉WinDBG使用该信息。

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10979418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档