#1 04.01.2008 15:34:10

Carsten
ProMember
Ort: Braunschweig
Registriert: 05.01.2006
Beiträge: 220
Web-Seite

Unerklärliche Schutzverletzungen

Über die DirectX-freien Weihnachtstage habe ich eine kleine Fotoverwaltung programmiert. Jetzt stürzt das Programm dauernd mit Zugriffsverletzung bei Lesen von Adresse FFFFFFFF ab.
Im Debugger landet man aber nur in der dpr-Datei nach dem Application.run
Nach F9 geht es dann im Kreis mit der Schutzverletzung weiter.

Mir ist es bisher nicht gelungen, irgendeinen Haltepunkt so zu setzen, daß man das Programm kurz vor dem Absturz abfangen kann, um zumindest eine Ahnung zu haben, wo etwa die Ursache liegen könnte.
Eigentlich passiert bei der ausgelösten Aktion nicht viel. Es werden nur ein paar Daten in das Formular eingetragen, was auch ohne Absturz gemeistert wird.  Erst danach kommt der absturz irgendwo aus den Tiefen des Systems.

Frage: Wie kann man so einen Fall enger eingrenzen? Fehler tritt unter Delphi 2005 und Delphi 7 auf.

Carsten

Beitrag geändert von Carsten (04.01.2008 15:47:03)

Offline

 

#2 04.01.2008 16:00:34

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Unerklärliche Schutzverletzungen

Hast du es mit einem Logfile versucht?

Ich benutze z.B. gerne folgendes C/C++ Marko:

Code:

#ifdef DEBUGMODE
  #define DEBUG std::cout << __FILE__ << " : " << __LINE__ << "\n"; std::cout.flush()
#endif

#ifndef DEBUGMODE
  #define DEBUG
#endif

Alle paar Zeilen schreibst du dieses Marko hin, es wird jedesmal automatisch Datei+Zeilennummer auf die Standardausgabe geschrieben. Wichtig ist das flush, also es wird auch jedesmal wirklich der Buffer geleert.
Wenn du dein Programm dann startest siehst du, einfach an der letzten Zeile im Logfile wo das Programm gecrasht ist. Man muss natürlich aufpassen mit welcher Anwendung man sowas macht. Bei der EWAIN.e-Engine haben wir auf die Art innerhalb von 2 Sekunden mal 600 MB Logfile produziert...(in Linux ist sowas mit genug freiem Arbeitspeicher möglich, weil nicht direkt auf die Platte geschrieben wird)

Sowas sollte sich doch auch für Delphi basteln lassen, oder?


My software never has bugs. It just develops random features.

Offline

 

#3 04.01.2008 17:15:03

Carsten
ProMember
Ort: Braunschweig
Registriert: 05.01.2006
Beiträge: 220
Web-Seite

Re: Unerklärliche Schutzverletzungen

Aber was macht das anderes als ein Haltepunkt?

Durch irgendeinen komischen Zufall (nach einer zufälligen Änderung ergab es ein etwas anderen Absturzmuster) bin ich drauf gekommen. Ich hatte irgendwo auf ein nicht erzeugtes Objekt zugegriffen, was dann offenbar zu dem Absturz führt. Komisch, daß sich das so eigenartig bemerkbar macht - also kein Bezug zwischen Problemstelle und Fehlerauftreten zu sehen ist.

Carsten

Offline

 

#4 04.01.2008 17:21:00

Lotipats
UltraMember
Registriert: 17.05.2005
Beiträge: 395

Re: Unerklärliche Schutzverletzungen

Für Logdateien nutze ich eine eigene Klasse von mir, die auch Einrücken hat etc..
Ich dachte immer __FILE__ und __LINE__ gibt es in Delphi nicht, von alternativen habe ich auch nicht gehört, aber sicher bin ich mir da nicht. Wenn es da etwas gibt, das wäre schön.

Und zu dem Eingrenzen:
Ich weiß ist vllt. dumm, aber ich wollte es notfalls doch anbringen:
Debuggen mit F8, F7 und F4 bringt auch nichts nennenswertes? Auch mit Parameter/Variablen Betrachtung?
Sollte das zu lange dauern, so kannst du bzgl. Variablenbelegung auch die LogDatei bemühen. Wie Coolcat aber schon sagte, kann es zu Problemen mit der Größe kommen.

Edit: Dein Problem ist also schon gelöst?

LOTIPATS

Offline

 

#5 04.01.2008 17:40:08

Carsten
ProMember
Ort: Braunschweig
Registriert: 05.01.2006
Beiträge: 220
Web-Seite

Re: Unerklärliche Schutzverletzungen

ja, ist gelöst. Aber mich würde trotzdem interessieren, wieso der Debugger nicht klarkommt.
Ich hatte also

objekt.xyzfunktion

aufgerufen und objekt war nicht belegt (lokale Variable). Normalerweise hält der Debugger dann doch an der Problemstelle an.

Carsten

Offline

 

#6 04.01.2008 18:54:30

efilnukefesin
Member
Ort: Bayreuth
Registriert: 12.04.2007
Beiträge: 50
Web-Seite

Re: Unerklärliche Schutzverletzungen

aber irgendwie is so ein verhalten doch standard, oder? also mir is sowas ne ganze zeit ständig passiert (ich bastel viel in quellen von kollegen die mir einfach ihre programme geben hmm), was mittlerweilen zur folge hat dass ich vor dem ersten aufruf von nem objekt ne prüfung auf nil einbau, also so in etwa:

Code: delphi

if f_info= nil then f_info:= tf_info.create(f_main);
f_info.showmodal;


erklärt zwar absolut net des problem, aber bei formaufrufen und so is des kein/ wenig zusätzlicher aufwand, um auf nummer sicher zu gehen. und forms sind ja auch nur objekte big_smile

Offline

 

#7 04.01.2008 19:04:33

Carsten
ProMember
Ort: Braunschweig
Registriert: 05.01.2006
Beiträge: 220
Web-Seite

Re: Unerklärliche Schutzverletzungen

mache ich natürlich auch, nur an der Stelle war was "verrutscht" - und das finde dann mal...

Carsten

Offline

 

#8 05.01.2008 06:48:35

efilnukefesin
Member
Ort: Bayreuth
Registriert: 12.04.2007
Beiträge: 50
Web-Seite

Re: Unerklärliche Schutzverletzungen

der punkt geht an dich tongue
irgendwie isses schon seltsam, man müsste sich mal intensiv damit beschäftigen unter welchen umständen der debugger ins dpr geht und wann er bei der zuweisung hält.
wenn ich daheim auf delphi 2007 zum beispiel auf private objekte meiner form zugreife, dann funktioniert das so wie es soll! auch wenn ich das objekt global mache hab ich kein problem! ich muss mal auf arbeit schauen, wann warum und wieso...

und zum thema finden: wenn ich so nen scheiss hab dann geh ich erstmal einen trinken und schlaf drüber lol außer es passiert mir früh um 8... sad

Offline

 

#9 05.01.2008 15:06:20

Carsten
ProMember
Ort: Braunschweig
Registriert: 05.01.2006
Beiträge: 220
Web-Seite

Re: Unerklärliche Schutzverletzungen

>und zum thema finden: wenn ich so nen scheiss hab dann geh ich erstmal einen trinken und schlaf drüber lol außer es passiert mir früh um 8...


Hatte ich auch alles schon probiert wink
Das Problem war am 27.12. rum aufgetaucht und bis zu meinem Beitrag war ich kein Schritt weiter. Daß es dann nach wenigen Stunden gelöst hat, war reiner Zufall...

Carsten

Offline

 

#10 06.01.2008 09:15:45

efilnukefesin
Member
Ort: Bayreuth
Registriert: 12.04.2007
Beiträge: 50
Web-Seite

Re: Unerklärliche Schutzverletzungen

oh, sorry dann für die unterstellung du wärst keinen trinken gegangen big_smile

glück braucht der mensch eben auch mal! was immer noch kein muster in das debugger-verhalten bringt, aber hey! smile

im endeffekt haste bei sowas echt die güldene a...karte... da hilft nur schrittweises durchgehen mitm debugger, und das kann ja mindestens genauso lange dauern, wie die methode "durch puren zufall drauf kommen", je nach codelänge... und wegen 10 zeilen code schreibt man ja kein programm!

Offline

 

Brett Fußzeile

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson