.load ...\clr.dll
пытается загрузить .NET Framework как плагин для WinDbg.Это не сработает.Плагин .NET для WinDbg называется SOS, и вы обычно делаете .loadby sos clr
.Однако это не должно иметь большого значения для оставшейся части сеанса.
Во-первых, вы используете !mbp
, который используется с исходным файлом и номером строки.Тем не менее, вы используете его с модулем и методом.
Во-вторых, даже для !mbm
параметры DebugTutorial Foo1
неверны.Формат module!namespace.class.method
.К счастью, вы можете использовать подстановочные знаки.Попробуйте !mbm *!*method
В-третьих, ИМХО, вы получите лучший отзыв о том, работает ваша команда или нет, если платформа .NET уже загружена и о джиттинге.Для этого используйте sxe ld clrjit
.
Итак, мы идем:
ntdll!LdrpDoDebuggerBreak+0x30:
00007ffd`fe112cfc cc int 3
0:000> sxe ld clrjit
0:000> *** Wait until .NET is loaded
0:000> g
(3bc4.33bc): Unknown exception - code 04242420 (first chance)
ModLoad: 00007ffd`d2530000 00007ffd`d265b000 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clrjit.dll
ntdll!NtMapViewOfSection+0x14:
00007ffd`fe0dfb94 c3 ret
0:000> .load E:\...\sosex.dll
0:000> !mbm *!*Foo1
0:000> !mbl
0 e : disable *!*FOO1 ILOffset=0: pass=1 oneshot=false thread=ANY
SODebugMBP!DebugTutorial.Program.Foo1() (PENDING JIT)
0:000> g
Breakpoint: JIT notification received for method DebugTutorial.Program.Foo1() in AppDomain 0000028c1a58ea00.
Breakpoint set at DebugTutorial.Program.Foo1() in AppDomain 0000028c1a58ea00.
Breakpoint 2 hit
00007ffd`730804e8 90 nop
0:000> !clrstack
OS Thread Id: 0x13d4 (0)
Child SP IP Call Site
000000d4d8afeaa0 00007ffd730804e8 DebugTutorial.Program.Foo1() [C:\...\Program.cs @ 14]
000000d4d8afead0 00007ffd730804a2 DebugTutorial.Program.Main(System.String[]) [C:\...\Program.cs @ 26]
000000d4d8afed30 00007ffdd2666da3 [GCFrame: 000000d4d8afed30]