Autor Beitrag
Tryer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 226
Erhaltene Danke: 7



BeitragVerfasst: Di 11.05.10 10:01 
Hallo,

im Stil von FastWild arbeite ich derzeit an dynamisch zur Laufzeit erstellten Funktionen. Soweit kein Thema, nur das Debuggen im CPU-Fenster scheint fast unmöglich.

Nachdem ich zum ersten mal mit F7 in die dynamisch erstellte Funktion gesprungen bin merkt sich Delphi(das CPU-Fenster) leider welchen Code es da gefunden hat, sprich der ausgeführte Code hat bei einer geänderten Funktion leider nichts mehr mit dem angezeigten zu tun.

Ok, dachte ich mir, dann verschiebe ich die Funktion bei jedem Aufruf in VirtualAlloc() über den ersten Parameter in einen anderen Speicherbereich - Pustekuchen, auch dann zeigt Delphi völligen Quatsch an.
Scheinbar sorgt nur ein Neustart der Entwicklungsumgebung dafür das wieder einmalig die "richtige" Funktion angezeigt wird.

Gibt es da irgendeine Lösung die Anzeige zu korrigieren, oder sollte man für sowas grundsätzlich OllyDbg o.ä. an Stelle des Delphidebuggers benutzen?

Grüsse, Dirk
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 11.05.10 10:22 
An der Stelle hat sich einiges getan seit Delphi 7. Du kannst es ja einmal mit der Trial von Delphi 2010 ausprobieren. Erst mit den neuen Versionen wird der Code dort automatisch an den aktuellen Programmverlauf angeglichen. Vorher war z.B. bei einem Neustart immer das CPU-Fenster leer.

Deshalb vermute ich, dass auch in deinem Fall das dort gehen könnte.

Hilft es bei Delphi 7 auch nichts das CPU-Fenster neu zu öffnen? Dann wirst du da wohl nichts machen können.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 11.05.10 10:38 
Alternativ kannst Du dir mit uallDisasm auch selber einen kleinen Debugger bauen. Kombiniert mit ODbgIntf kommt man da schon recht weit (zumal Du dir dann sogar dynamisch Debug-Informationen einblenden könntest mit ODbgMapfile).

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Tryer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 226
Erhaltene Danke: 7



BeitragVerfasst: Di 11.05.10 10:45 
Sowas hab ich mir schon gedacht..

Das CPU-Fenster zu schliessen bringt auch nichts, ich mache das aufgrund meines recht kleinen Monitors eh immer erst bei Bedarf auf :D. Selbst nach dem Neustart der Testanwendung steht halt noch der alte Quatsch drin. Es hilft wohl wirklich nur der Neustart von Delphi (vielleicht auch Projekt schliessen/öffnen, das könnte ich noch ausprobieren).

Auf eine neue Delphiversion werde ich deswegen nun nicht umsteigen, dann muss ich halt doch mit OllyDbg arbeiten. Fürs Auge ist der Wechsel zwischen IDE und OllyDbg gewöhnungsbedürftig, das ist aber (auch dank der erweiterten Info in OllyDbg) definitiv das kleinere Übel.

uallDisasm werd ich mal anschauen, denke aber das es OllyDbg dann für mich tut.

Danke, Dirk