Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

26.07.2013, 00:09

Debugger richtig verwenden?

Hallo Leute,

mein Projekt nimmt langsam eine umfangreiche Form an und es wird schwieriger Fehler ausfindig zu machen. Ich habe jetzt nach ein paar Tipps zum Debuggen gesucht, habe allerdings nicht viel mehr gefunden als das man Haltemarken setzen und gucken soll, was passiert. Aber so richtig komme ich damit auch nicht weiter.

Ich benutze Visual Studio 2012 Express, was ja bestimmt alles bietet was man braucht. Kann mir jemand Tipps zum gezielten Debuggen geben oder mir etwas Lesematerial verlinken? Ich möchte halt allgemein auch besser nachvollziehen können, was mein Code tatsächlich tut.

Vielen Dank :)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

26.07.2013, 00:38

So allgemein Tipps zu geben ist etwas schwierig. Hast du denn ein konkretes Problem, dem du auf den Grund gehen möchtest?

3

26.07.2013, 02:25

Naja ein konkretes Problem habe ich momentan nicht. Aktuell ist halt, dass zum Beispiel Teile von meinem Tileset und meine Spielfigur unregelmäßig "flackern"...also einfach kurz verschwinden wenn ich kein framelimit festlege. (SFML) Da ich aber kein Problem habe wenn ich ein framelimit setze habe ich das auch erst mal nicht weiter beachtet. Jetzt habe ich es halt mal wieder von der ToDo-List vorgekramt und habe Möglichkeiten gesucht wie man diesem Problem auf den Grund gehen kann.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

26.07.2013, 06:48

Mal ein glFlush() eingefügt nachdem alle Zeichenoperationen durchgeführt wurden und das present gerufen werden soll?

Oder passiert das nur beim Scrolling? Das wäre dann eventuell Tearing und absolut normal, wenn man keine Synchronisierung mit dem Monitor durchführt.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

5

26.07.2013, 08:15

Ich habe jetzt nach ein paar Tipps zum Debuggen gesucht, habe allerdings nicht viel mehr gefunden als das man Haltemarken setzen und gucken soll, was passiert.
Ja klar, was soll man auch sonst grossartig machen? Der Debugger ist kein Magier der erraten kann was du machen willst und dir dann den Fehler zeigt. Ein Debugger kann z.b. ganz schwer feststellen, warum eine bestimmte Zeile in deinem Programm _nicht_ ausgefuehrt wird.

Du muesstest dann mal von Hand schauen, welche Vorbedingungen das Zeichnen deines Tiles hat. Dann koenntest du fuer alle diese Bedingungen einen bedingten Breakpoint machen, damit er anhaelt, wenn einer der Bedingungen nicht erfuellt ist.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

26.07.2013, 08:33

Die Performance von bedingten Breakpoints ist übrigens gruselig. Meist ist es sehr viel besser die Bedingung als IF in den Code zu prügeln und den Breakpoint in das IF zu packen. Kleiner Tipp am Rande. Gilt für C++, C# und Java gleichermaßen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

26.07.2013, 08:34

Sehr hilfreich finde ich das "Immediate Window" (wenn du das beim Debuggen nicht siehst, musst du es unter Debug -> Windows aktivieren). Dort kannst du Ausdrücke eingeben, die dann ausgewertet werden (ist aber beschränkt). Ähnlich wie in einer JavaScript-Konsole. Damit sparst du dir oft Code für Debug-Ausgaben.

8

26.07.2013, 11:43

Danke für die Tipps.

@TGGC: Nein, ich habe keinen magischen Magier erwartet sondern einfach Tipps gesucht, wie man den Debugger besser nutzen kann. Bedingte Breakpoints und das Immediate-Fenster kannte ich zum Beispiel noch gar nicht.

Achja, das Problem mit dem Flackern konnte ich auch beseitigen. Es lag lediglich daran, dass ich setView() vor draw() ausgeführt habe.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

26.07.2013, 13:10

Essentielles Features eines jeden Debuggers ist auch der Callstack, falls du den noch nicht kennst.

Debuggen an sich ist – wie auch Programmieren – zu einem großen Teil Erfahrungssache...

Werbeanzeige