Frage

Ich versuche, einen Weg zu erstellen, um die Debug-Informationen eines C ++ - Projekts an einen Remote-Speicherort zum Testen zu übertragen. Im aktuellen Entwicklungszyklus erfordern kleine Änderungen am Code die gesamte Binärdatei (100s Mb in der Größe und meist debuggen info), um übertragen zu werden.

Derzeit mein Ansatz zur Adressierung kann dies durch das Aufteilen der Debugging-Informationen aus den Objektdateien (deren Größe ohne die Debugging-Info auf meiner Verbindung überhüllt ist) unter Verwendung von -gsplit-Zwerg und diffrieren Sie dann die Debug-Dateien gegen eine Kopie der Build aktuell auf der Remotebox.

Das Ziel ist es, einen Satz von Patches für die Debug-Dateien eines Projekts zu haben, damit der neue Code an einem entfernten Standort debugiert werden kann. Die Verbindung zwischen dem Remote-Speicherort und dem lokalen Computer ist langsam, und die Minimierung der Größe der Patches ist jedoch von größter Bedeutung, es sollte jedoch auch mit der Laufzeit des Werkzeugs ausgewogen sein. Ich habe in Bsdiff und Xdelta als potenzielle Lösungen in ein Rätsel gesucht, in dem XDETLA schnell ist, aber zu groß ist, und Bsdiff ist in Bezug auf die Größe perfekt, aber die Laufzeit- und Gedächtnisanforderungen sind jedoch etwas höher als ich es wäre.

Gibt es ein Werkzeug oder einen Ansatz, den ich vermisse oder bin ich einfach den falschen Weg? Eine Alternative zu Bsdiff und Xdelta vielleicht? Ich weiß, dass ein Tool wie GbdServer in dieser Situation nicht funktioniert, da wir mit dem eigentlichen Debugging, den wir haben, in dieser Situation. Könnte eine Änderung von BSDIFF der Leistung helfen? In der Tat, wenn der Ansatz, den ich benutze, ist ein Sound, was wäre ein guter Weg, um eine Kopie des Builds auf der Remote-Maschine auf dem Laufenden zu halten.

War es hilfreich?

Lösung

Der einfachste Weg ist die Verwendung von "Strip", um den Debuginfo in eine separate ".debug" -Datei zu kopieren und dann erneut "Streifen" verwenden, um die Debug-Informationen aus der ausführbaren ausführbaren Datei zu entfernen, die Sie bereitstellen, die Sie bereitstellen. Das "Strip" -Betuierer erläutert, wie dies dies tun soll, suchen Sie nach der Option "-On-Heep-Debug".

Nachdem Sie dies getan haben, können Sie GDB auf verschiedene Weise über die separaten Debug-Info informieren. Der beste Weg ist, die Funktion "Build-ID" zu verwenden. Dies ist, was modernen Linux-Distributionen tun. Es gibt jedoch auch andere Wege. Es gibt einen ganzen Abschnitt im GDB-Handbuch über separate Debug-Dateien.

Der Schlüsselpunkt Hier ist, dass Sie die GDB auf der abgestreiften ausführbaren Datei starten können, und es wird automatisch die separaten Debug-Info gefunden. Diese Daten können alle lokal sein, sodass Sie die Debug-Info nicht bereitstellen müssen.

Wenn Sie sich immer noch auf das Schrumpfen von Debug-Info interessieren, auch wenn dies erledigt ist, können Sie das Tool "DWZ" ansehen. Dies ist ein Zwergkompressor. Dies ist jedoch in der Regel nur wichtig, wenn Sie den Debug-Info irgendwo hinzufügen - Distris verwenden Sie es, um das Herunterladen von Debug-Info zu erleichtern, aber normale Benutzer sehen den Bedarf nicht wirklich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top