STATUS_SINGLE_STEP Exceptions debuggen mit VS2005
-
Ich bin zurzeit dabei mir einen Disassembler/Debugger zu programmieren und es funktioniert auch eigentlich alles ganz gut!
Leider ist das verhalten von Visual Studio bei STATS_SINGLE_STEP (0x8000003) Exceptions etwas eigenwillig.
Diese Exception wird ausgelöst bei "Hardware Breakpoints" oder wenn ich programmcode im einzelschritt "tracen" möchte!
Komischerweise erkennt Visual Studio die Exception und stoppt auch im VS-Dissasembler Fenster an der gewünschten stelle aber leider ohne meinen eigenen Exception Handler aufzurufen.
Ich habe es mit 3 verschiedenen Exception Handlern versucht (VEH, Unhandled Exception Filter und sogar mit einem KiUserExceptionDispatcher Hook) jeweils einen Breakpoint im entsprechenden Handler gesetzt aber dieser wird nie erreicht und bei STATUS_SINGLE_STEP stoppt der VS-Debugger immer im Dissasembler Fenster.Jetzt vermute ich das VS intern diese Exceptions selbst nutzt und man diese daher nicht debuggen kann bzw. habe ich keine Ahnung warum VS sich so verhält.
Evtl. hat jemand hier im Forum eine Idee was ich wo einstellen könnte damit diese Exception durch meinen Handler wandert!
Danke schon mal im voraus für eure Zeit
-
Klar nutzt VS dierse Exceptions selbst.
Öffne das Debug Menü. Öffne dort den Menüpunkt Exceptions. Dort wird definiert wie Exceptions von VS behandelt werden sollen.
Aber ich bezweifle, dass Du diese Exception umbiegen kannst.
Ansonsten gibt es in dem Buch von John Robbins "Debugging .NET Applications" (unpassender Titel, aber ganz nettes Buch) o.ä. auch einen Abschnitt über die Art und Weise wie man einen Debugger schreibt.
-
Die Einstellung im Debug Menü hab ich auch schon versucht.
Exception manuell eingefügt und jeweils mit Haken und ohne versucht Auch in den Visual Studio Optionen unter Debuggen schon verschiedene Variationen der Einstellungen versucht aber immer das gleiche!Leider findet man auch nirgends Informationen wie Visual Studio intern beim debuggen arbeitet.
Bleibt wohl nur der weg über einen externen Debugger bzw. sogar nur mit einem kernel-debugger da ja auch die externen Debugger mit ihren Breakpoints arbeiten müssen.
Danke für deinen beitrag aber evtl. hat ja jemand anderes noch eine Idee was man evtl noch machen könnte.