-
-
[求助]我很奇怪,到底Windbg的ld命令是怎么用的。
-
发表于:
2010-5-17 13:11
6132
-
[求助]我很奇怪,到底Windbg的ld命令是怎么用的。
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命令却实现不了.....
请指教一下,谢谢!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!