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

Daedra22

Treue Seele

  • »Daedra22« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Osten

Beruf: Student Informationstechnik

  • Private Nachricht senden

1

05.01.2014, 14:54

Überwachung von Variablen / Debug / SDL_Projekt eine Konsole hinzufügen

Hallo liebe Community,

habe gerade einen Fehler bei meinem Snakeprojekt entdeckt, bei dem anscheinend eine SDL_Rect Struktur ungewöhnliche Werte annimmt, ich möchte aber während der Laufzeit genau sehen, wann die Werte sich verändern.
Ähnlich wenn ich einen Fehler bekomme, dass unten in einem Fenster eine Liste aller Variablen ist und ihr Wert zum Zeitpunkt des Absturzes.

Ich habe gelesen, dass ich mittels Einzelschritten oder Prozedurschritten ich in einen Haltemodus des Kompilers gelange und nur da die Werte beobachten kann.
Da aber bei einem SDL_Projekt die Einzelschritte durch F10 oder F11 in der SDL.h libary rumspringen bzw, nicht wirklich in meinem Quellcode, kann ich tausende Male da F10 Drücken ohne ein Ergebnis zu erzielen.
Das Einfügen eines Haltepunktes per Bedingung finde ich nicht schlecht, leider klappt es nicht so richtig bei mir, da ich erst einen Haltepunkt platzieren muss und er dann sagt er kennt die Variable nicht und und und ...

Außerdem habe ich keine Konsole in dem SDL-Projekt und will nicht extra per SDL_TTF Schriften einfügen.
Was ist die einfachste Methode wie ich meine Variable doch effektiv beobachte ? Wie macht ihr das ?

Danke für eure Zeit im voraus.
Who are you? - I am a game designer.
No you are not! - I am a game designer.
What kind of a designer ? - I am a game designer.
You mean you play games ? - I am a game designer.

2

05.01.2014, 14:59

bei mir ist immer ein Konsolenfenster geöffnet, ich verwende dann

C-/C++-Quelltext

1
2
freopen( "CON", "wt", stdout );
freopen( "CON", "wt", stderr );


um mir variablen dann per cout in der Konsole ausgeben zu lassen, die zwei Zeilen in die funktion einsetzen, iostream includen und schon kriegste den Inhalt der Variable in die Konsole

Daedra22

Treue Seele

  • »Daedra22« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Osten

Beruf: Student Informationstechnik

  • Private Nachricht senden

3

05.01.2014, 16:02

Wenn ich also :

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;

...

main:

freopen( "CON", "wt", stdout );
freopen( "CON", "wt", stderr );

cout<<"Test"<<endl;
...


hab ich immernoch keine Konsole geöffnet ...
Who are you? - I am a game designer.
No you are not! - I am a game designer.
What kind of a designer ? - I am a game designer.
You mean you play games ? - I am a game designer.

4

05.01.2014, 16:37

versuchs mal über main, ich verwende des meistens in einer funktion z.b

C-/C++-Quelltext

1
2
3
4
5
6
7
void Move()
{
freopen( "CON", "wt", stdout );
freopen( "CON", "wt", stderr );

cout << "" << endl;
}

bei dir ist bei der SDL keine Konsole geöffnet???

welche sdl version benutzt du denn?

Daedra22

Treue Seele

  • »Daedra22« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Osten

Beruf: Student Informationstechnik

  • Private Nachricht senden

5

05.01.2014, 17:03

1.2.15

und die mainfunktion hat diesen kopf:

int main(int args, char** argc)

daran liegts vllt ...



und ich hatte extra angegeben, dass es keine konsolenanwendung sein soll sondern ein leeres projekt

Hab außerdem alles per Lazy-Foo Anleitung gemacht, da wurde auch Subsystem Windows genommen und Multithreated DLL und so weiter:
http://lazyfoo.net/SDL_tutorials/lesson01/windows/msvsnet2010e/index.php
Who are you? - I am a game designer.
No you are not! - I am a game designer.
What kind of a designer ? - I am a game designer.
You mean you play games ? - I am a game designer.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Daedra22« (05.01.2014, 17:14)


Swoerm

Alter Hase

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

6

06.01.2014, 01:14

Füg ganz am Anfang folgende Zeile ein:

C-/C++-Quelltext

1
#pragma comment (linker, "/subsystem:console")

Wenn du ein normales SDL Fenster wieder haben willst ersetzt du einfach "console" durch "windows".
Hoffe ich konnte dir weiterhelfen.

Edit: Ich benutze

C-/C++-Quelltext

1
int main (argc, char *argv[]) {...}

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

06.01.2014, 06:57

Statt einem hässlichen pragma könnte (und sollte meiner Meinung nach auch) man besser die Projekt-Einstellungen entsprechend editieren.
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]

8

06.01.2014, 07:48

habe gerade einen Fehler bei meinem Snakeprojekt entdeckt, bei dem anscheinend eine SDL_Rect Struktur ungewöhnliche Werte annimmt, ich möchte aber während der Laufzeit genau sehen, wann die Werte sich verändern.
Visual C++? In dem Fall Debug -> New Breakpoint -> New Data Breakpoint... -> Adresse der Variable eintragen und der Debugger stoppt sofort, wenn sich ihr Wert ändert.

Zitat

leider klappt es nicht so richtig bei mir, da ich erst einen Haltepunkt platzieren muss und er dann sagt er kennt die Variable nicht und und und ...
Und woher weißt du dann, dass falsche Werte drinstehen, wenn der Debugger die Variable nicht kennt?

Swoerm

Alter Hase

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

9

06.01.2014, 11:54

Ich finde es praktischer anstatt jedes mal wenn ich zwischen Konsole und normalem Fenster hin und her wechseln will kurz in meiner main.cpp das pragma comment zu ändern anstatt mich durch die Projekteinstellung zu navigieren was in meinem Fall wesentlich länger dauern würde. Aber jeder wie er will. ^^

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

06.01.2014, 12:09

Wieso sollte man das denn auch ständig ändern? Für Debug hat man die Konsole einfach immer, für Release nie.
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]

Werbeanzeige