Ich verwende VS.NET 2010. Ich kompilierte eine sehr einfache .NET 4.0-Anwendung.
%Vor%Ich öffne die kompilierte ausführbare Datei von windbg 6.12.0002.633. Tippen Sie die folgenden Befehle ein, um sosex zu laden
%Vor%Geben Sie dann den folgenden Befehl ein, um die Unterbrechungspunkte festzulegen
%Vor%und dann das Programm ausführen. Keiner der Breakpoints wurde getroffen.
Irgendeine Idee?
* EDIT *
Hier füge ich mehr Details über meine Umgebung per Marc's Anfrage ein
%Vor%* BEARBEITEN 17.08.2012 *
Dank Colinsmith, denke ich, hast du die nächste Antwort bekommen. Ich habe mein Programm als 32-Bit-Programm kompiliert. Wechseln Sie zu 32-Bit-Windbg und 32-Bit-Sosex. Befolgen Sie die gleichen Schritte, um die Unterbrechungspunkte festzulegen. Nun, wenn ich !mbl
mache. Die Breakpoint-Liste wird anders dargestellt.
Vorher habe ich die Zeile (PENDING JIT)
nicht gesehen. Setze das Programm fort und Windbg stoppt erfolgreich am Haltepunkt.
Ich habe keine Ahnung, warum 64-Bit-Programm nicht funktioniert. Ich habe meine 64-Bit-sosex.dll und meine 64-Bit-Programmsymbolpfade überprüft. Alles sieht korrekt aus. Vielleicht ist es ein Fehler in sosex.dll?
Ich verwende .NET 4.0 und mein windbg läuft unter Windows 2008 R2 64-bit.
Hier sind einige Vorschläge, Dinge zu überprüfen:
Sie könnten versuchen, zu warten, bis das Runtime / JITter / Modul geladen / initialisiert wurde, bevor Sie den Haltepunkt setzen.
Verwenden:
sxe ld:mscorlib
(Pause nach dem Laden der Laufzeit) ... oder sxe ld:clrjit
(Pause, nachdem JITter geladen wurde) ... oder sxe ld:MyModuleAssemblyName
(Pause, nachdem das Modul geladen wurde) Dies wird einen Bruch in den Debugger verursachen, nachdem sie aufgetreten sind .... Sie können dann Ihre !mbm
, etc.
Verwenden:
lml
(zeige geladen und konnte Symbole nicht laden) lme
(show konnte nur Symbole nicht laden). Sie könnten alternativ !sym noisy
für eine detaillierte Spur der Symbolladeaktivität, z.B. hilft, herauszufinden, wenn Sie .pdbs usw. beschädigt haben.
Für eine nützliche Referenz zu einigen PDB-bezogenen Fehlercodes:
Für eine allgemeine Diskussion über das Überprüfen, ob Symbole richtig geladen sind, siehe:
Außerdem könntest du versuchen, dein Programm unter dem 32-Bit-Debugger anstelle des 64-Bit-Debuggers auszuführen (und natürlich das 32-Bit-SOSEX-Plugin ... und kompiliere es als x86) ... und siehst, ob du das gleiche Ergebnis bekommst oder nicht .
In Steves Techspot sagt er, dass er die Kompatibilität in XP (die du anscheinend verwendest) gebrochen hat ... vielleicht ist das das Problem. (vom 8. Juni 2012)