AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Effektiv Debuggen

Ein Thema von Neutral General · begonnen am 15. Jul 2006 · letzter Beitrag vom 16. Jul 2006
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Effektiv Debuggen

  Alt 15. Jul 2006, 16:50
Hi,

Ich bin grad an einem Doppelkopfspiel am programmieren und es klappt auch fast.. nur manchmal gibt es eine AV wenn die KI eine Karte legen soll.. Das kommt daher das eine Funktion der KI ne Nil-Karte zurückgegeben hat was normalerweise nicht sein kann.. aber da es anscheinend doch passiert. Oder irgendwas anderes. Dummerweise ist meine KI seeeehr umfangreich und um zu entscheiden welche Karte die KI legt brauche ich ca 30 verschiedene Funktionen + eine Hauptfunktion

Ich hab zwar schon einiges durch Breakpoints verbessern können aber das geht einfach nicht mehr...
Wenn ich an einer Stelle en Breakpoint hinsetze wo es ungefähr krachen könnte dann ist das Problem das normalerweise bei jeder Karte die ein Computerspieler spielt an dem Breakpoint angehalten wird. Und dadurch muss ich mich dann bei JEDER Karte durch die massig vielen und eventuell auch großen Funktionen mit vielen Schleifen durchdebuggen und meisten krachts erst gegen Ende des Spiels... Mh.. jeder Spieler hat 12 Karten.. 3 PC Spieler = 36 Karten = 36 * 30 Funktionen mit jeweils riesigen Schleifen. Da sitze ich noch nächstes Jahr dran

Kann der Debugger nicht irgendwie zu dem Punkt springen bei dems gekracht hat ?
Wenn ich Delphi-Exceptions an mache dann bekomm ich immer nur den Projekt Quelltext zu sehn nach der AV und davon hab ich auch nix...

Gruß
Neutral General
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Effektiv Debuggen

  Alt 15. Jul 2006, 17:00
Zitat von Neutral General:
Kann der Debugger nicht irgendwie zu dem Punkt springen bei dems gekracht hat ?
Wenn ich Delphi-Exceptions an mache dann bekomm ich immer nur den Projekt Quelltext zu sehn nach der AV und davon hab ich auch nix...
Keinen Callstack, nix? Das ist natürlich schlecht .
Wäre es noch zu verkraften, in jede Funktion (vielleicht kannst du die Kandidaten ja noch eingrenzen)
Assert(FooKarte <> nil); einzubauen?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#3

Re: Effektiv Debuggen

  Alt 15. Jul 2006, 17:05
Als aller erstes Assertion in deine Funktionen reinbauen. Mit zb.

Delphi-Quellcode:
begin
  Assert(Karte <> nil, 'Karten object in Funktion XYZ darf nicht nil sein').
end;
Diese Assertition kannst du per Compileroptionen Ein/Aus schalten und sind somit in deiner fertigen Anwendung nicht reincompiliert. Du kannst sie also im Source belassen und steuerst nur per Switches ob sie aktiv sind oder nicht.

Diese Vorgehensweise halte ich für den Anfang als weit effektiver als mit dem Debugger an falscher Stelle tausende von Sourcezeilen zu tracen.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Effektiv Debuggen

  Alt 15. Jul 2006, 17:10
Naja ich hab schon in jede Funktion die es sein könnte

if Temp = -1 then ShowMessage('Fehler in Funktion xyz');

Denn in diesen Funktionen gibt die Funktion nil zurück wenn Temp = -1.. dh es muss an irgendwas anderem liegen
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Effektiv Debuggen

  Alt 16. Jul 2006, 12:51
Hat keiner sonst noch irgendwelche Ideen ? Ich verzweifle noch dran

Sind zwar keine 24 Stunden aber es ist dringend
Michael
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Effektiv Debuggen

  Alt 16. Jul 2006, 12:57
Assertions scheinen mir das sicherste. Du kannst auch bei Karte = nil deinen eigenen "Breakpoint" setzen:

Delphi-Quellcode:
if Karte=nil then
  raise Exception.Create('Alarm!');
Aber Assertions machen auch nixhts anderes. WO liegt also im Moment dein Problem?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Effektiv Debuggen

  Alt 16. Jul 2006, 13:15
Zitat von DGL-luke:
Assertions scheinen mir das sicherste. Du kannst auch bei Karte = nil deinen eigenen "Breakpoint" setzen:

Delphi-Quellcode:
if Karte=nil then
  raise Exception.Create('Alarm!');
Aber Assertions machen auch nixhts anderes. WO liegt also im Moment dein Problem?
Mein Problem hat sich vor 5 Minuten in Luft aufgelöst
Ich habe mir mal alle Karten von allen Spielern anzeigen lassen und nach langer Beobachtung hab ich dann herausgefunden das die AV immer dann kommt wenn Trumpf gespielt ist und der PC nach ner höheren Karte suchen soll aber wenn sie keine höhere hat dann wusste der PC nicht was er legen sollte und dann hats gekracht.. hab das jetzt behoben

Thx trotzdem für eure Hilfe

Gruß
Neutral General
Michael
  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 06:09 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