AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wie debugge ich eine Delphi-App mit Syser?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie debugge ich eine Delphi-App mit Syser?

Ein Thema von Phoenix · begonnen am 18. Nov 2008 · letzter Beitrag vom 19. Nov 2008
Antwort Antwort
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#1

Wie debugge ich eine Delphi-App mit Syser?

  Alt 18. Nov 2008, 17:21
Hi,

ich sitz vor einem böööösen Bug.
Ich habe eine MDI-Anwendung. Wenn ich alle MDI-Child Formulare schliesse, und ein bestimmtes Form 5x hintereinander öffne und sofort wieder schliesse, überschreibt beim 6. mal irgendetwas eine Speicherstelle, was an einer bestimmten Komponente in der TComponent-Hierarchie der Anwendung zu einer Access Violation in der TComponent.Notification Methode führt. Das ganze tritt nur bei dem einen MDI-Form auf, und auch nur dann, wenn ich vorher alle anderen MDI-Forms schliesse. Ist auch nur ein anderes offen, so passiert das nicht. Das ganze Verhalten ist reproduzierbar, wenn auch ungeheuer seltsam anmutend.

Leider ist das Projekt sehr umfangreich (Ja, DeddyH, es ist ein Schlangentier , so dass ich durch althergebrachtes Suchen den Fehler nicht finden kann. Das muss irgend ein seltsamer Seiteneffekt von irgend einem Fehler sein, den wir hier nach +1 Tag Aufwand zu Zweit nicht finden konnten.

Der Kollege kam nun auf die Idee, dass er damals mittels SoftIce einen Hardware-breakpoint gesetzt hatte, so dass die CPU den Prozess automatisch anhält, sobald eine bestimmte Speicherstelle gelesen und/oder beschrieben wird. SoftIce gibt es ja nicht mehr, deshalb haben wir jetzt einmal die Trial von Syser geholt. (Ich will so ein Feature direkt in Delphi!).

Deswegen jetzt die Frage: Wie können wir das mit Syser debuggen? Ich habe da zwei Probleme:

Syser benötigt nun pdb Symbole. Delphi hat eine Map-Datei und .rsm Symbole. Kann ich aus den Delphi-Symbolen irgendwie diese SDS-Dateien (Syser Debug Symbols) erzeugen? Syser könnte seine Symbole aus .PDB Dateien selber generieren. Also brauche ich entweder einen direkten Weg Delphi-Sybole -> Syser Symbole oder den Umweg über pdb's. Geht das? Wenn ja: Wie?

Wenn die Antwort: 'Gar nicht' lautet (wobei ich hoffe, dass es irgendwie geht), dann würde ich in Syser rein über die Adressen gehen und die Symbole im Delphi-Debugger auflösen lassen.

Dazu müsste ich nur wissen, wie ich Syser an einen laufenden Prozess anhängen kann. Die Hilfe schweigt sich leider aus, einen entsprechenden Menüpunkt habe ich auch nicht gefunden. Wie kann ich also analog zu Delphi einen laufenden Prozess mit Syser debuggen? Sobald ich die Speicheradresse habe, die den Schreibvorgang auslöst, so kann ich in Delphi ja wieder gucken welche Methode das ist.

Schonmal vielen Dank.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Wie debugge ich eine Delphi-App mit Syser?

  Alt 18. Nov 2008, 17:50
Gibt’s in deiner Delphi-Version kein:
  • Run / Add Breakpoint / Data Breakpoint...
oder
  • View / Debug Windows / Breakpoints (Ctrl+Alt+B)
  • (rechte Maustaste) Add / Data Breakpoint...
?
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Wie debugge ich eine Delphi-App mit Syser?

  Alt 18. Nov 2008, 18:06
Delphi 2009 ... Fenster ... kann es mit dem von Andreas Hausladen entdeckten Bug zusammenhängen?
http://andy.jgknet.de/blog/?p=241
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Wie debugge ich eine Delphi-App mit Syser?

  Alt 18. Nov 2008, 18:08
Hi Phoenix,

besteht denn keine Moeglichkeit, dass Unit, welches die 5 Forms aufruft, zu etrahieren und in einem Extra Programm mal zu testen?
Ich glaube, mit SoftIce(bzw. Nachfolger) wird das net so einfach..habe mich da mal vor Jahren mit rumgeaergert (Hardwarebreakpoints).
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#5

Re: Wie debugge ich eine Delphi-App mit Syser?

  Alt 19. Nov 2008, 09:32
Nico: Doch hat es, probier ich gleich mal aus.

Daniel: Whoops. Ich vergass: Das projekt ist Delphi 2006

Kaktus: Nein. Das Projekt ist zu komplex um einen Teil zu extrahieren.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Wie debugge ich eine Delphi-App mit Syser?

  Alt 19. Nov 2008, 10:04
Zitat von Phoenix:
Doch hat es, probier ich gleich mal aus.
Mach das, hat mir schon öfter geholfen
Datenhaltepunkte sind (sinnvollerweise) nicht persistent. Du musst sie also in jeder Debugsitzung neu anlegen/aktivieren.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#7

Re: Wie debugge ich eine Delphi-App mit Syser?

  Alt 19. Nov 2008, 10:14
Treffer! Haben den Fehler!
Dank des Datenhaltepunktes haben wir die Stelle herausgefunden, an der dort die Mistdaten in die Komponente geschrieben wurde.
Grund war ein harter Typecast (also nicht mittels as, sondern direkt gecastet) eines falschen Objektes auf eine (dort) nicht existente Vorfahrenklasse.

Vielen Dank. Wieder eine Menge übers Debuggen gelernt gestern und heute
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz