如何使windbg从自定义位置加载clr.dll?

如何使windbg从自定义位置加载clr.dll?,windbg,Windbg,我正在使用以下命令行启动windbg: C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x64>windbg -i c:\tmp\Psscor4\amd64;c:\tmp\Psscor4\x86;c:\tmp;srv*E:\symbols*http://msdl.microsoft.com/download/symbols C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x64>

我正在使用以下命令行启动windbg:

C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x64>windbg -i c:\tmp\Psscor4\amd64;c:\tmp\Psscor4\x86;c:\tmp;srv*E:\symbols*http://msdl.microsoft.com/download/symbols

C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x64>
然后我加载内存崩溃转储并检查它从何处加载clr.dll:

Microsoft (R) Windows Debugger Version 6.2.9200.20512 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.


Loading Dump File [C:\tmp\Memory.dmp]
User Mini Dump File with Full Memory: Only application data is available

Comment: 'Dump created by DbgHost. First chance exception 0XE0434352'
Symbol search path is: c:\tmp\Psscor4\amd64;c:\tmp\Psscor4\x86;c:\tmp;srv*E:\symbols*http://msdl.microsoft.com/download/symbols
Executable search path is: c:\tmp\Psscor4\amd64;c:\tmp\Psscor4\x86;c:\tmp;srv*E:\symbols*http://msdl.microsoft.com/download/symbols
Windows 7 Version 7601 (Service Pack 1) MP (16 procs) Free x64
Product: Server, suite: Enterprise TerminalServer SingleUserTS
Built by: 6.1.7601.17965 (win7sp1_gdr.121004-0333)
Machine Name:
Debug session time: Mon Oct 14 13:45:55.000 2013 (UTC - 4:00)
System Uptime: not available
Process Uptime: 0 days 2:49:12.000
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
............................................................
Loading unloaded module list
..
This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(5768.5db4): CLR exception - code e0434352 (first/second chance not available)
KERNELBASE!RaiseException+0x39:
000007fe`fd33bccd 0000            add     byte ptr [rax],al ds:00000000`3af07bb2=00
0:122> lm vm clr
start             end                 module name
000007fe`f9a70000 000007fe`fa3ce000   clr        (deferred)             
    Image path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
    Image name: clr.dll
    Timestamp:        Mon Jul 09 00:10:25 2012 (4FFA59B1)
    CheckSum:         00959DDE
    ImageSize:        0095E000
    File version:     4.0.30319.17929
    Product version:  4.0.30319.17929
    File flags:       8 (Mask 3F) Private
    File OS:          4 Unknown Win32
    File type:        2.0 Dll
    File date:        00000000.00000000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
0:122> ld clr
Symbols loaded for clr
0:122> lm vm clr
start             end                 module name
000007fe`f9a70000 000007fe`fa3ce000   clr        (pdb symbols)          e:\symbols\clr.pdb\D3D86782AEDD446F917F5D81FDFD3D252\clr.pdb
    Loaded symbol image file: clr.dll
    Mapped memory image file: c:\tmp\clr.dll
    Image path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
    Image name: clr.dll
    Timestamp:        Mon Jul 09 00:10:25 2012 (4FFA59B1)
    CheckSum:         00959DDE
    ImageSize:        0095E000
    File version:     4.0.30319.17929
    Product version:  4.0.30319.17929
    File flags:       8 (Mask 3F) Private
    File OS:          4 Unknown Win32
    File type:        2.0 Dll
    File date:        00000000.00000000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
0:122> .exepath
Executable image search path is: c:\tmp\Psscor4\amd64;c:\tmp\Psscor4\x86;c:\tmp;srv*E:\symbols*http://msdl.microsoft.com/download/symbols
Expanded Executable image search path is: c:\tmp\psscor4\amd64;c:\tmp\psscor4\x86;c:\tmp;srv*e:\symbols*http://msdl.microsoft.com/download/symbols
所以,我的问题是,为什么windbg坚持从C:\Windows\Microsoft.NET\Framework64\v4.0.30319加载clr.dll,而映像路径和符号路径都指向我真正需要的clr.dll所在的另一个位置-C:\tmp

现在,当我强制加载符号时,我们可以看到:

Loaded symbol image file: clr.dll
Mapped memory image file: c:\tmp\clr.dll
Image path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Image name: clr.dll
我不喜欢它。我希望图像路径也来自c:\tmp


如何操作?

映像路径显示了被调试者(转储的进程)找到clr.dll的位置


不管你喜欢与否,这是你对此无能为力的:-)

我明白了。所以这不是问题,因为显示为映像路径的路径与转储中记录的路径相对应,与用于在调试器机器上加载clr.dll的路径无关,对吧?我简直不敢相信这一点,因为有用于卸载和重新加载的命令,但Kjell似乎是对的。Try:lm m mscorwks;***尚未加载mscorwks。sos mscorwks加载!体育课lm m mscorwks;***mscorwks现在已加载。重新加载/u mscorwks;lm m mscorwks;***mscorwks再次卸载。重新加载/s/v“D:\mscorwks.dll”;