Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#19

AW: eigener Debugger - Haltepunkte

  Alt 24. Jun 2024, 09:49
32 Bit Debugger + 32 Bit Anwendung = joar, knallt nicht mehr so oft
64 Bit Debugger + 64 Bit Anwendung = pfffffffffff niiiijaaa
64 Bit Debugger + 32 Bit Anwendung = hier hängt noch bissl mehr (muß man an vielen Stellen bezüglich WOW64 biss was beachten ... und dann kennt Delphi hier unter 64 Bit viele der 32 Bit APIs und Records nicht)
32 Bit Debugger + 64 Bit Anwendung = das geht natürlich garnicht

Das Code Coverige nutzt die Lösung, wo überall INT 3 reingeschrieben wird
und dann wie in #1 beschrieben, wird das nach Auslösen zurückgepatcht, der InstuctionPointer -1 und dann weiter.
Das Wieder-Aktivieren des Haltepunktes sparen sie sich ... wird eh nur geloggt WAS aufgerufen wurde (nicht wie oft)

Mit dem SingleStepping hab ich Probleme.
Nach dem Auslösen müsste ich den ja wieder aktivieren,
aber leider klappt das irgendwie nicht.
-> Im ThreadContext das Trap-Flag setzen hat keine Wirkung.
* innerhalb des EXCEPTION_BREAKPOINT, bevor ContinueDebugEvent(DBG_CONTINUE)
* oder sonstwann zwischen SuspendThread und ResumeThread

EXCEPTION_BREAKPOINT wird ausgelöst,
aber egal wann und wie ich es versuche, es kommt niemals ein EXCEPTION_SINGLE_STEP.

Auch im DelphiDebugger versucht, also anhalten und dann in der CPU-Ansicht das TF-Flag aktivieren ... nach F7/F8/F9 ist keine Auswirkung zu erkennen
und in der nächsten Pause ist das TF auch wieder aus.

https://microsoft.public.win32.progr...ingle-stepping
https://www.lowlevel.eu/wiki/EFLAGS
...

Mal sehn, ob ich bei dem noch was finde.
https://www.timdbg.com/posts/symbol-indexing/

Das RIP_EVENT konnte ich auch noch nicht triggern ... also vermutlich ist es wohl wirklich tot.
https://reverseengineering.stackexch...gers-rip-event
https://learn.microsoft.com/de-de/wi...bugging-events
$2B or not $2B
  Mit Zitat antworten Zitat