首页
社区
课程
招聘
[求助]我很奇怪,到底Windbg的ld命令是怎么用的。
发表于: 2010-5-17 13:11 6132

[求助]我很奇怪,到底Windbg的ld命令是怎么用的。

2010-5-17 13:11
6132
windbg的帮助文件里说:

ld ModuleName [/f FileName]

其中 ModuleName 是指定要加载符号的模块名, 而 /f FileName 则:

改变选择用来匹配的名称。默认情况下使用模块名来匹配,但是当使用/f时,使用文件名来匹配而不是模块名。FileName 可以包含各种通配符合修饰符。

我的理解是,默认情况下,如模块名是 1.dll,  那么windbg去找 1.pdb, 或者1.dll中记录着符号文件是 222.pdb,就去找 222.pdb;

而 /f FileName选项说可以按照"文件名来匹配",什么意思呢?我理解能力可能是差了点,我猜想。

一、这是指模块的文件名; 如果指定 FileName 为 aa.dll, 则去找 aa.pdb,而不管模块名是 1

二、这是指符号文件名;这是最合理的,就是说,模块名是1.dll,  但是对应的符号文件名可能是 test.pdb, 这时就可以 ld 1 /f test.pdb

但是:

ld 1 /f aa
ld 1 /f aa.dll   或者用全路径 ld 1 /f C:\aa.dll
ld 1.dll /f aa
ld 1.dll /f aa.dll 或者用全路径 ld 1.dll /f C:\aa.dll
ld 1 /f test
ld 1 /f test.pdb 或者用全路径 ld 1 /f C:\test.pdb
ld 1.dll /f test
ld 1.dll /f test.pdb 或者用全路径 ld 1.dll /f C:\test.pdb

..... 几乎全部可能的组合我都试过了, WinDbg全部提示命令错误:

Extra character error in ....  (... 命令存在扩展字符错误  - 当然命令也没有成功)

我真搞不懂, 这个 /f FileName 选项到底是怎么用的;

如,假设遇上这种情况, 一个exe, 记录着符号文件是在 C:\123.pdb, 而实际的符号文件名却是 C:\pdb\test.pdb,只是路径不同,Windbg默认下当然是去找 C:\123.pdb,当然就找不到,无法为其加载符号; 而我却想要WinDbg为这个exe加载 C:\pdb\test.pdb这个符号文件,但是我用ld命令却实现不了.....  

请指教一下,谢谢!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 3
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我还发觉,如果把模块中记录着的符号文件路径全部填0,WinDbg会显示不出这个模块的模块名, 原来WinDbg把符号文件名称当作模块名, 至少我在调试EXE时候发现了这个情况.... 晕死,估计把符号文件路径填0后,又没有了模块名,WinDbg再也没有任何办法为这个模块加载符号文件了,晕。。。。。
2010-5-17 13:50
0
雪    币: 3
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没人来说一下啊,郁闷
2010-5-18 00:34
0
游客
登录 | 注册 方可回帖
返回
//