Der Breakpoint von sosex.mbp oder sosex.mbm funktioniert nicht

10

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.

%Vor%

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.

    
Harvey Kwok 01.08.2012, 23:15
quelle

1 Antwort

5

Hier sind einige Vorschläge, Dinge zu überprüfen:

Warten Sie, bis die Module geladen sind, bevor Sie Haltepunkte setzen

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.

tun

Überprüfen Sie, ob Ihre privaten Programmsymbole (von der .pdb) richtig geladen wurden

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:

Verwenden Sie 32bit oder 64bit WinDBG

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 .

Verwenden Sie die neueste Version von SOSEX

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)

Colin Smith 18.08.2012, 12:01
quelle

Tags und Links