Antwort schreiben  Thema schreiben 
Verfasser Nachricht
vista200
Head of Awesomeness
***


Beiträge: 189
Gruppe: User
Registriert seit: Jul 2009

Status: Offline
Danke erhalten: 139
Beitrag: #1
xPSP  [TIPP] Standardausgabe in C/C++ umlenken

Hallo Leute!

Ich saß gerade an meiner PSP und war fröhlich am Programmieren, als mir das Tippen von "pspDebugScreenPrintf" zu viel wurde.

Kurzerhand tippte ich den Präprozessor-Befehl

Code:
#define pspDebugScreenPrintf printf


ein und erlebte eine Überraschung:Alles, was zuvor auf dem Bildschirm der PSP ausgegeben wurde, wurde nun beim Debuggen mit PSPLink in die Konsole von PSPSH umgelenkt!

Um die ganzen Ausgaben auf dem Bildschirm der PSP zu sehen, muss man lediglich die beiden Befehle vertauschen. So kann man wunderbar debuggen, ohne, dass flackernde Meldungen erscheinen oder man den Umweg über sceIoWrite(1, buffer, strlen(buffer)); gehen muss.

Wollte ich nur mal kurz gesagt haben. Vielleicht hilft es dem einen oder anderen ja, die Debugmeldungen der eigenen Programme auszulesen und quasi "live" mitzuverfolgen.


03.11.2011 23:45
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
D3lta (Nov-4-2011)
D3lta
Experte
****


Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010

Status: Abwesend
Danke erhalten: 205
Beitrag: #2
RE: [TIPP] Standardausgabe in C/C++ umlenken

Oder man könnte es so machen:

Code:
#ifdef DEBUG
#define pspDebugScreenPrintf printf
#else
#define printf pspDebugScreenPrintf
#endif

Brauche ich glaube ich nicht zu erklären Wink

mfg D3lta

P.S.: Ich habe es lediglich nur etwas umgeschrieben Wink
EDIT: Kann jemand bitte einen Link für PSPLink posten?


"Linux is like a tent, no windows, no gates and an apache inside."

Dieser Beitrag wurde zuletzt bearbeitet: 04.11.2011 14:41 von D3lta.

04.11.2011 14:20
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
vista200 (Nov-4-2011)
vista200
Head of Awesomeness
***


Beiträge: 189
Gruppe: User
Registriert seit: Jul 2009

Status: Offline
Danke erhalten: 139
Beitrag: #3
xPSP  RE: [TIPP] Standardausgabe in C/C++ umlenken

D3lta :
Oder man könnte es so machen:

Code:
#ifdef DEBUG
#define pspDebugScreenPrintf printf
#else
#define printf pspDebugScreenPrintf
#endif

Brauche ich glaube ich nicht zu erklären Wink

mfg D3lta

P.S.: Ich habe es lediglich nur etwas umgeschrieben Wink


Das ist natürlich die schönere Variante, aber um diese Uhrzeit war ich sowieso erstaunt, dass noch irgendeine Zeile funktioniert, die ich da tippe Big Grin


04.11.2011 14:28
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
D3lta
Experte
****


Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010

Status: Abwesend
Danke erhalten: 205
Beitrag: #4
xPSP  RE: [TIPP] Standardausgabe in C/C++ umlenken

wurzelbums :

D3lta :
Oder man könnte es so machen:

Code:
#ifdef DEBUG
#define pspDebugScreenPrintf printf
#else
#define printf pspDebugScreenPrintf
#endif

Brauche ich glaube ich nicht zu erklären Wink

mfg D3lta

P.S.: Ich habe es lediglich nur etwas umgeschrieben Wink


Das ist natürlich die schönere Variante, aber um diese Uhrzeit war ich sowieso erstaunt, dass noch irgendeine Zeile funktioniert, die ich da tippe Big Grin


Kenne ich Big Grin
Hast du denn einen Link für mich?
Ich würde psplink auch gerne ausprobieren Wink

mfg D3lta


"Linux is like a tent, no windows, no gates and an apache inside."
04.11.2011 16:19
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
vista200
Head of Awesomeness
***


Beiträge: 189
Gruppe: User
Registriert seit: Jul 2009

Status: Offline
Danke erhalten: 139
Beitrag: #5
xPSP  RE: [TIPP] Standardausgabe in C/C++ umlenken

D3lta :
Kenne ich Big Grin
Hast du denn einen Link für mich?
Ich würde psplink auch gerne ausprobieren Wink


PSPLink ist doch bei der Toolchain dabei. Ich entwickle auf einer Ubuntu-VM, da der Host (OSX) ein paar Probleme mit dem Compiler hat.

Im Ordner (pspsdk)/bin liegt die usbhostfs_pc bzw. usbhostfs_pc.exe, die musst Du einmal aus deinem Projektpfad heraus starten oder sie mit dem Argument deines Projektpfades aufrufen.

Außerdem liegt da die pspsh bzw. pspsh.exe, die dir die Verbindung zur PSP herstellt, über die Du dann auch mit der PSP kommunizierst.

Und wenn Du googelst, dann findest Du auch die ganzen Dateien, die auf die PSP gehören. Ich kann sie Dir auch gerne hochladen, musst nur Bescheid sagen.

Wenn Du dann PSPLink auf der PSP startest, steht im Konsolenfenster von usbhostfs_pc "Connected to device", sofern Du noch keine Treiber für die PSP installiert hast.
Außerdemm sollte dann in dem pspsh-Fenster die Eingabeaufforderung "host0:>" erscheinen. Hier kannst Du dann den Namen Deiner kompilierten PRX angeben und siehe da, sind keine Fehler aufgetreten, wird Dein Programm auf der PSP gestartet.

Das Vorgehen ist schneller, als das Homebrew immer zu kompilieren, die PSP in den USB-Modus zu bringen, die EBOOT zu kopieren und dann das Homebrew wieder zu starten. Wenn das Homebrew abstürzt kannst Du außerdem nachvollziehen, wo es abgestürzt ist. Aber das ist ein (fast) ganz anderes Thema...


04.11.2011 16:47
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
D3lta (Nov-4-2011)
D3lta
Experte
****


Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010

Status: Abwesend
Danke erhalten: 205
Beitrag: #6
RE: [TIPP] Standardausgabe in C/C++ umlenken

Oh, soetwas habe ich schon gesucht ^^
Es wäre sehr nett, wenn du mir die Dateien hochladen könntest Smile
(Ich nutze ein installiertes Ubuntu)

mfg D3lta


"Linux is like a tent, no windows, no gates and an apache inside."
04.11.2011 17:18
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
vista200
Head of Awesomeness
***


Beiträge: 189
Gruppe: User
Registriert seit: Jul 2009

Status: Offline
Danke erhalten: 139
Beitrag: #7
xPSP  RE: [TIPP] Standardausgabe in C/C++ umlenken

D3lta :
Es wäre sehr nett, wenn du mir die Dateien hochladen könntest Smile


Hier haste:

psplink.zip - Das kommt nach ms0:/PSP/GAME/
scripts.zip - Das kannst Du in jedes Projekt reinkopieren.

Wenn Du dann anfängst zu entwickeln, dann rufst Du nur ein einziges Mal(!!!) die usb_start.sh auf:

Code:
sudo ./usb_start.sh


Nach Eingabe des Root-Passworts kannst Du dann sehen, dass usbhostfs gestartet wurde. Nun drückst Du Strg+A und dann Strg+D. Du bist wieder im Terminal, usbhostfs läuft nun im Hintergrund.

Die run.sh musst Du so anpassen, dass in der zweiten Zeile nicht "<target>.prx", sondern Deine PRX steht. Sonst kommst Du nicht weit damit Wink

Wenn Du jetzt

Code:
./run.sh

aufrufst, dann wird dein Projekt kompiliert, die PRX auf der PSP gestartet und im Anschluss pspsh noch einmal gestartet, damit Du die Ausgaben dann siehst, die das Programm macht.

Happy Debugging! Wink


04.11.2011 19:26
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
D3lta (Nov-4-2011)
D3lta
Experte
****


Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010

Status: Abwesend
Danke erhalten: 205
Beitrag: #8
RE: [TIPP] Standardausgabe in C/C++ umlenken

Morgen muss ich das ausprobieren Big Grin
Für heute lese ich erst einmal den Text über Boost::Thread zu ende Smile

mfg D3lta

P.S.: Eigentlich ist

D3lta :

Code:
#ifdef DEBUG
#define pspDebugScreenPrintf printf
#else
#define printf pspDebugScreenPrintf
#endif

C-Style...
In C++ würde man es glaube ich so machen:

Code:
const bool DEBUG=false;  //bzw true beim debuggen
//...
void print(const char* buffer)
{
   if(DEBUG)
      printf(buffer);
   else
      pspDebugScreenPrintf(buffer);
}


"Linux is like a tent, no windows, no gates and an apache inside."
04.11.2011 19:37
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
vista200
Head of Awesomeness
***


Beiträge: 189
Gruppe: User
Registriert seit: Jul 2009

Status: Offline
Danke erhalten: 139
Beitrag: #9
RE: [TIPP] Standardausgabe in C/C++ umlenken

Was auch immer das ist...

Hauptsache, es funktioniert. Big Grin Ich bau' gerne Mixes aus C und C++. Das Projekt ist hauptsächlich C, brauch aber für TinyXML C++...

Und solange das alles geht, wie ich mir das vorstelle... Wayne? Big Grin

Schönen Abend noch!


04.11.2011 20:06
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
D3lta
Experte
****


Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010

Status: Abwesend
Danke erhalten: 205
Beitrag: #10
xPSP  RE: [TIPP] Standardausgabe in C/C++ umlenken

wurzelbums :
Was auch immer das ist...

Hauptsache, es funktioniert. Big Grin Ich bau' gerne Mixes aus C und C++. Das Projekt ist hauptsächlich C, brauch aber für TinyXML C++...

Und solange das alles geht, wie ich mir das vorstelle... Wayne? Big Grin

Schönen Abend noch!


Gleichfalls Smile
Ich versuche im Moment mir erst einmal reines C++ beizubringen, aber für PSP etc verwende ich wohl erstmal C.
Klassen etc sind zum Glück im SDK implementiert...

mfg D3lta


"Linux is like a tent, no windows, no gates and an apache inside."
04.11.2011 21:09
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
isiprimax
Junior Mitglied
**


Beiträge: 18
Gruppe: User
Registriert seit: Jan 2011

Status: Offline
Danke erhalten: 9
Beitrag: #11
xPSP  RE: [TIPP] Standardausgabe in C/C++ umlenken

D3lta :
Morgen muss ich das ausprobieren Big Grin
Für heute lese ich erst einmal den Text über Boost::Thread zu ende Smile

mfg D3lta

P.S.: Eigentlich ist

D3lta :

Code:
#ifdef DEBUG
#define pspDebugScreenPrintf printf
#else
#define printf pspDebugScreenPrintf
#endif

C-Style...
In C++ würde man es glaube ich so machen:

Code:
const bool DEBUG=false;  //bzw true beim debuggen
//...
void print(const char* buffer)
{
   if(DEBUG)
      printf(buffer);
   else
      pspDebugScreenPrintf(buffer);
}

Das eine ist soviel C wie das andere C++ ist.

Es sind Präprozessor Befehle.

Weitere Infos hier http://www.cppreference.com/wiki/de/preprocessor/start.

04.12.2011 22:30
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben  Thema schreiben 

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen




» zum Seitenanfang