Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 16, 2025 06:19

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: HILFE bei Fehlerbehebung!!!
BeitragVerfasst: So Jan 25, 2004 17:51 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Also, hab da ein Programm (3D Editor für ne noch folgende simulation), Funzt auch alles, stürzt aber bei völig unterschiedlichen Aktionen ab. CPU Last is denn bei 100% und das wars. Hab alle repeat schleifen (sind leider ne menge) mit "Notausgängen ausgestattet, hilft aber nix. Kann auch schlecht alle Zeilen im Quelltext rot Markieren.

Meine Frage: Kann ich unter Delphi irgendwie gucken in welcher Zeile sich das Programm befindet???

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 25, 2004 18:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 24, 2003 19:09
Beiträge: 732
Das Programm frißt sich also in einer der Repeat schelifen fest?

Erzeuge einfach ne Log datei beim start des Programms und lass da die Repeat schleifen ihren aktuellen Status(Die aktuelle Position) rein schreiben ... Wenns sichs aufgehängt hat kannste da dann nachschauen was das Prog als letztes gemacht hat


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 25, 2004 18:36 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 20, 2003 09:15
Beiträge: 70
Wohnort: Italien
so direkt kann man das nicht machen. Ein Weg ist die Methode Assert:
Mit dem Assert - Befehl kann man das Programm anhalten (wie halt); dabei wird die Zeilennummer (Code) in einer Message-Box ausgegeben.
Dem Assert wird eine Bedingung übergeben, bei der das Programm angehalten wird...

Wenn du dir sicher bist, in welchem Codesegment das Programm sich aufhängt, kannst du ja zur Laufzeit dort einen Haltepunkt hinzufügen (F5 im Code-Editor betätigen).

_________________
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt" Albert Einstein


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 25, 2004 18:49 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Warum so kompliziert??? Wenn du dein Programm in Delphi startest befindet es sich automatisch im Debugger. Wenn sich das Programm jetzt aufhängt, dann wechselst du nach Delphi und drückst auf das Pausezeichen. Dann bleibt Delphi automatisch da stehen wo es sich das Programm befindet. Evtl musst du dann mittels Callstack (Aufrufliste) noch in die passende Methode wechseln. Falls du aus deiner Schleife noch viel Dinge aufrufst. Bei Multithreaded Anwendungen musst du noch in den ensprechenden Thread wechseln. Also mit Hilfes des Threadlistenfensters. Alle beide zu finden unter "Ansicht" -> "Debug-Fenster"

Und das hat sogar noch den Vorteil, dass du den Inhalt von allen Variablen sehen kannst und wenn du dich langsam durchtastest (Schrittweise ausführung vom Programm) dann sogar genau siehst warum es nicht rausspringt. Was bei Loggs überhaupt nicht erkennbar ist.

Assert hat keine Ähnlichkeit mit Halt. Halt beendet das Programm wobei Assert lediglich eine Exeption auslost sobald die übergebene Bedingung False zurückgibt. Die Exception wird im schlimmsten Falle von der TApplication Klasse abgefangen aber niemals wird dabei die Anwenung beendet. Es dient eigentlich dazu im Falle eines Ungültigen Wertes (z.B.: Wenn eine Übergebene Variable nicht erstellt wurde etc.) die Ausführung der derzeitigen Aktion zu unterbrechen.

Assert hat noch einen anderen tieferen Sinn. Man kann in den Compileroptionen auch die Überprüfung von Assert Global austellen. In C++ schimpft sich das Releaseversion und Debugversion. Die Releaseversion überprüft dann nicht so stark nach ungültigen Werten und ist meistens schneller n der Ausführung.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 25, 2004 19:45 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Werd mal rumprobieren. Das Problem is ja gerade, das es eigentlich nicht die repeat schleifen sein können. Nach den Aktionen bei denen es passirt müssten es die selektionsproceduren sein (kommen auf mausklick/irgendwie logisch beim editor) Aber da hab ich auch schon Sicherheitsüberprüfungen auf falsche werterückgaben eingebaut! naja was sind schon 3 tage erfolglose fehlersuch? :-)
Hab dabei wenigstens ne menge anderer feinheiten verbessert.

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 25, 2004 20:06 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
geo hat geschrieben:
naja was sind schon 3 tage erfolglose fehlersuch? :-)

So etwas passiert schon mal. Richtig schlimm sind aber die Fehler die mir einem entschiedenen Manchmal auftreten. ;-)

Auf jeden Fall ist der Debugger eine sehr mächtiges Werkzeug bei der Fehlersuche und eine intensive Nutzung wert. Ich habe das schon sehr oft feststellen dürfen. :twisted:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 25, 2004 21:12 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Und wenn's dann gar nicht mehr weiter geht, sollte man sich überlegen, das Ganze eventuell in den Müll zu werfen, aufgrund der bisherigen Erfahrungen neu zu planen und alles neu zu implementieren.
Oft ist man damit schneller, als viel Zeit ins Herumdoktern an suboptimalem und unübersichtlichem Code zu investieren - wofür brauchst du denn in einem 3D-Editor so viele Repeat Schleifen?

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]