Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

28.02.2010, 18:13

Debugger: Nach ankoppel Breakpoint

Hi Leute,
ich schreibe mir zur Zeit einen eigenen Debugger. Ich bin auch schon ziemlich weit. Allerdings habe ich schon seit längerem einen Bug und eine Frage, welche ich bis jetzt nicht lösen konnte.
Der Bug:
Immer wenn ich eine .exe lade, oder mich an einen Prozess ankoppele, gibt es direkt danach ein Debugevent. Und zwar einen Breakpoint. Ich habe aber keinen gesetzt. Wie kann das sein? Es muss doch an meinem Code liegen, oder muss man diesen ersten Breakpoint einfach ignorieren? Aber selbst wenn stellt sich ja die Frage, warum er auftaucht. Hier mal der Code, der aufgerufe wird, wenn es ein Debugevent gibt:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    def HandleDebugEvent(self, eEvent):
        # Was fuer ein Event wurde ausgeloest?
        if eEvent.dwDebugEventCode == EXCEPTION_DEBUG_EVENT:
            # Eine Ausnahme ist aufgetreten!
            # In behandeln...
            Exception = eEvent.u.Exception.ExceptionRecord.ExceptionCode
            
            if Exception == EXCEPTION_ACCESS_VIOLATION:
                print "Access Violation detected!"
                self.HandleCommandDbg()
                self.dbgmode = False
            elif Exception == EXCEPTION_BREAKPOINT:
                self.HandleBreakpoint(eEvent)
            elif Exception == EXCEPTION_GUARD_PAGE:
                print "Guard Page Access detected!"
                self.HandleCommandDbg()
                self.dbgmode = False
            elif Exception == EXCEPTION_SINGLE_STEP:
                print "Single Step detected!"
                self.HandleCommandDbg()
                self.dbgmode = False
        elif eEvent.dwDebugEventCode == EXIT_PROCESS_DEBUG_EVENT:
            self.dbgmode = False

Und nun die Frage:
Ich kann Breakpoints an Funktionsaufrufe positionieren. Aber wie bekomme ich die übergebenen Argumente? Die sind ja auf dem Stack, aber wie komme ich daran?
Ich hoffe, mir kann jemand helfen, und bedanke mich für Hilfe schon einmal im Voraus.[/code]