|
Verfasser |
Nachricht |
vista200
Head of Awesomeness
Beiträge: 189
Gruppe: User
Registriert seit: Jul 2009
Status:
Offline
Danke erhalten: 139
|
[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
#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 |
|
Folgende User bedanken sich: |
|
D3lta
Experte
Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 205
|
RE: [TIPP] Standardausgabe in C/C++ umlenken
Oder man könnte es so machen:
#ifdef DEBUG
#define pspDebugScreenPrintf printf
#else
#define printf pspDebugScreenPrintf
#endif
Brauche ich glaube ich nicht zu erklären
mfg D3lta
P.S.: Ich habe es lediglich nur etwas umgeschrieben
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 |
|
Folgende User bedanken sich: |
|
vista200
Head of Awesomeness
Beiträge: 189
Gruppe: User
Registriert seit: Jul 2009
Status:
Offline
Danke erhalten: 139
|
RE: [TIPP] Standardausgabe in C/C++ umlenken
Oder man könnte es so machen:
#ifdef DEBUG
#define pspDebugScreenPrintf printf
#else
#define printf pspDebugScreenPrintf
#endif
Brauche ich glaube ich nicht zu erklären
mfg D3lta
P.S.: Ich habe es lediglich nur etwas umgeschrieben
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
|
|
04.11.2011 14:28 |
|
|
|
D3lta
Experte
Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 205
|
RE: [TIPP] Standardausgabe in C/C++ umlenken
Oder man könnte es so machen:
#ifdef DEBUG
#define pspDebugScreenPrintf printf
#else
#define printf pspDebugScreenPrintf
#endif
Brauche ich glaube ich nicht zu erklären
mfg D3lta
P.S.: Ich habe es lediglich nur etwas umgeschrieben
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
Kenne ich
Hast du denn einen Link für mich?
Ich würde psplink auch gerne ausprobieren
mfg D3lta
"Linux is like a tent, no windows, no gates and an apache inside."
|
|
04.11.2011 16:19 |
|
|
|
vista200
Head of Awesomeness
Beiträge: 189
Gruppe: User
Registriert seit: Jul 2009
Status:
Offline
Danke erhalten: 139
|
RE: [TIPP] Standardausgabe in C/C++ umlenken
Kenne ich
Hast du denn einen Link für mich?
Ich würde psplink auch gerne ausprobieren
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 |
|
Folgende User bedanken sich: |
|
D3lta
Experte
Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 205
|
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
(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 |
|
|
|
vista200
Head of Awesomeness
Beiträge: 189
Gruppe: User
Registriert seit: Jul 2009
Status:
Offline
Danke erhalten: 139
|
RE: [TIPP] Standardausgabe in C/C++ umlenken
Es wäre sehr nett, wenn du mir die Dateien hochladen könntest
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:
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
Wenn Du jetzt
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!
|
|
04.11.2011 19:26 |
|
Folgende User bedanken sich: |
|
D3lta
Experte
Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 205
|
RE: [TIPP] Standardausgabe in C/C++ umlenken
Morgen muss ich das ausprobieren
Für heute lese ich erst einmal den Text über Boost::Thread zu ende
mfg D3lta
P.S.: Eigentlich ist
#ifdef DEBUG
#define pspDebugScreenPrintf printf
#else
#define printf pspDebugScreenPrintf
#endif
C-Style...
In C++ würde man es glaube ich so machen:
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 |
|
|
|
vista200
Head of Awesomeness
Beiträge: 189
Gruppe: User
Registriert seit: Jul 2009
Status:
Offline
Danke erhalten: 139
|
RE: [TIPP] Standardausgabe in C/C++ umlenken
Was auch immer das ist...
Hauptsache, es funktioniert. 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?
Schönen Abend noch!
|
|
04.11.2011 20:06 |
|
|
|
D3lta
Experte
Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 205
|
RE: [TIPP] Standardausgabe in C/C++ umlenken
Was auch immer das ist...
Hauptsache, es funktioniert. 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?
Schönen Abend noch!
Gleichfalls
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 |
|
|
|
isiprimax
Junior Mitglied
Beiträge: 18
Gruppe: User
Registriert seit: Jan 2011
Status:
Offline
Danke erhalten: 9
|
RE: [TIPP] Standardausgabe in C/C++ umlenken
Morgen muss ich das ausprobieren
Für heute lese ich erst einmal den Text über Boost::Thread zu ende
mfg D3lta
P.S.: Eigentlich ist
#ifdef DEBUG
#define pspDebugScreenPrintf printf
#else
#define printf pspDebugScreenPrintf
#endif
C-Style...
In C++ würde man es glaube ich so machen:
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 |
|
|
|