Forum: PC-Programmierung QT QProcess Jlink gdbserver


von Olaf (Gast)


Lesenswert?

Ich bin gerade ein wenig ratlos. :-o

Ich will aus Qt den gdbserver starten:

const char *Str1 = Command.toLocal8Bit();
const char *Str2 = Param.toLocal8Bit();

printf( "Programm: [%s]\n", Str1);
printf( "Parameter: [%s]\n", Str2);

process.start(Command, QStringList() << Param);

Das führt zu folgender interessanten Fehlermeldung:

Programm: [/usr/bin/JLinkGDBServer]
Parameter: [-if SWD -device EFM32GG230F1024]
SEGGER J-Link GDB Server V6.20h Command Line Version

JLinkARM.dll V6.20h (DLL compiled Oct 27 2017 16:21:36)

WARNING: Unknown command line parameter -if SWD -device EFM32GG230F1024 
found.
Command line: -if SWD -device EFM32GG230F1024
[..]
Could not connect to target.
Please check power, connection and settings.

Mit anderen Worten der Server wird gestartet, beendet sich aber sofort 
wieder weil er behauptet die falschen Parameter bekommen zu haben. 
Allerdings die Parameter die er als falsch ausgibt sind richtig. Ich 
kann die so wie er sie ausgibt mit der Maus in ein anderes 
Terminalfenster kopieren und er verbindet sich korrekt!

Hat da jemand eine Erklaerung fuer?

Olaf

von Clemens W. (daxmus)


Lesenswert?

Vielleicht solltest Du wirklich eine Liste als Parameter übergeben. 
Immerhin erwartet es QProcess so. Nicht das die Parameter in " gesetzt 
werden. AFAIK hat QProcess doch eine Funktion, um den kompletten String 
auszugeben, mit dem das Programm aufgerufen wird.

von Schwarzseher (Gast)


Lesenswert?

Du übergibst nur einen Parameter: "-if SWD -device EFM32GG230F1024"

gdb erwartet 4:
"-if"
"SWD"
"-device"
"EFM32GG230F1024"

--> einzeln in die StringList schieben.

von Lutz B. (lutzbroszio)


Lesenswert?

Überprüfen mal, ob dein QStringList wirklich mehrere Elemente enthält 
und nicht nur ein Element mit beiden Parametern.

von Olaf (Gast)


Lesenswert?

> Du übergibst nur einen Parameter: "-if SWD -device EFM32GG230F1024"

Argh! Ich haette nicht gedacht das dies so ein Problem sein koennte,
aber wirklich damit....

QStringList ParameterListe = Param.split(' ');

....funktioniert es dann. :-)

Olaf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.