2016-06-28 11 views
2

Ich habe Qt kompiliert und erstellt SD-Karte Bild und montiert mit losetup. Im Vergleich zur direkten sshfs Montierung ist die Vergleichbarkeit viel schneller. Die Anwendung wird ausgeführt. Jetzt möchte ich debuggen, was tot langsam ist und es scheint, als ob die Dateien zum Debuggen zurück auf den Dev-Rechner kopiert werden. Ich sehe diesen Vorschlag:Sehr langsames Debugging

File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.

Ich gdb-multiarch verwenden und gdbserver bekam (auf Ziel-Board).

Ich bin hier irgendwie verloren. Wo kann ich diese Option einstellen? Ich habe --sysroot Argument zur binären, aber keine Verwendung geliefert. Jede Hilfe wird wirklich geschätzt.

Update: mit Qt Creator für die Entwicklung.

Antwort

2

sysroot ist eine gdb-Einstellung. Sie können es in gdb mit dem Befehl set sysroot festlegen. Zum Beispiel:

(gdb) help set sysroot 
Set an alternate system root. 
The system root is used to load absolute shared library symbol files. 
For other (relative) files, you can add directories using 
`set solib-search-path'. 

Diese Einstellung steuert, wie GDB versucht, verschiedene Dateien, die er braucht, und insbesondere die ausführbare Datei und gemeinsam genutzte Bibliotheken, die Sie debuggen zu finden.

Aktuelle Versionen von gdb default sysroot bis target:, was bedeutet "holen Sie die Dateien vom Ziel". Wenn Sie lokal debuggen, ist dies nur lokaler Dateisystemzugriff; Aber wenn Sie remote debuggen und eine langsame Verbindung haben, kann das ein bisschen schmerzhaft sein. Um dies schneller zu machen, sollten Sie eine lokale Kopie aller benötigten Dateien behalten und dann set sysroot verwenden, um gdb auf diese lokale Kopie zu verweisen.

Das Hauptproblem mit diesem Ansatz ist, dass, wenn Ihre lokale Kopie nicht mit der Fernbedienung synchronisiert ist, Sie gdb verwirren und Unsinn Ergebnisse bekommen können. Ich bin mir nicht sicher, aber vielleicht ermöglicht das Aktivieren von Build-IDs dieses Problem etwas (in der Theorie kann gdb Build-ID-Mismatches erkennen und warnen, ich weiß einfach nicht, ob es tatsächlich funktioniert).

+0

Ich verwende Qt Creator. Danke – ramtheconqueror

+0

@ramtheconqueror So? Qt Creator ist eine IDE, kein Debugger. Es verwendet GDB, um Ihren Code auf dem Ziel zu debuggen. Sie können Debugger-Befehle in Qt Creators Debugger-Protokoll-/Befehlsfenster ausgeben. Zeigen Sie es, indem Sie zum folgenden Menüpunkt gehen: 'Window-> Views-> Debugger Log'. Dort können Sie die Sysroot-Einstellung ändern. –

Verwandte Themen