Nemo: So debuggen Sie Nemo

Erstellt am 27. Jan. 2020  ·  5Kommentare  ·  Quelle: linuxmint/nemo

Ich verwende Linux Mint 19.3 Tricia .

Ich bastle am Nemo-Quellcode herum. Ich brauche ein wenig Debugging-Hilfe. Ich habe https://forums.linuxmint.com/viewtopic.php?t=235125 . überprüft
https://stackoverflow.com/questions/31282505/how-to-debug-nemo-linux-mint-file-manager

Ich ändere den Code und versuche zu debuggen:

"Quellcode-Repositorys" aktiviert.

git clone https://github.com/linuxmint/nemo
cd nemo

Jetzt bearbeite ich den Code. Ich verwende printf( "key_1 %s \n", key_1); , um verschiedene Variablen zu beobachten.

sudo apt-get build-dep nemo 
dpkg-buildpackage 
cd .. && sudo dpkg -i *.deb

ctrl+alt+backspace um Xorg neu zu starten

Dann benutze ich

$ gdb nemo
(gdb) r

Suchen Sie dann nach der Ausgabe von printf .

Ich bin sicher, es gibt eine elegantere Lösung. Gibt es eine Möglichkeit, den Code ohne printf , dpkg-buildpackage , ctrl+alt+backspace debuggen?

Hilfreichster Kommentar

Hallo, sorry, ich wollte früher antworten.

Die Art und Weise, wie Sie bauen, ist in Ordnung. Um nach dem ersten Build und der Installation mit dpkg-buildpackage Zeit zu sparen, werde ich stattdessen Folgendes ausführen:
sudo ninja -C debian/build install
-- um nachfolgende Male neu zu kompilieren - es ist viel schneller, und es müssen keine Pakete neu installiert werden (das System kümmert sich nicht wirklich darum, Sie kopieren vorhandene Dateien) - das ist gut, wenn Sie so tun, wie Sie sind - Hinzufügen Debug-Ausgabe usw. Verstehen Sie nur, dass Sie, wenn Sie einen weiteren "echten" Build mit dpkg-buildpackage durchführen möchten, sudo verwenden müssen, um den Build-Ordner zu bereinigen (ich verwende sudo git clean -fdx - dies gibt es zurück zu seinen unberührten Zustand).

Ich habe nie versucht, eine vollständige ide zu entwickeln, daher bin ich mir nicht einmal wirklich sicher, wie Breakpoints dort funktionieren. Die einfachste Methode besteht darin, ein G_BREAKPOINT() einzufügen, wo immer es aufhören soll - dann können Sie in gdb alles tun, was Sie tun müssen.

Sie müssen die Sitzung
nemo --quit
oder
killall nemo

Wenn Sie die Desktopsymbole debuggen möchten, wird dies mit nemo-desktop , also müssen Sie es stattdessen beenden / neu starten. (Sie müssen es beim ersten Mal zweimal beenden, der Sitzungsmanager versucht es genau einmal nach dem Start der Sitzung neu zu starten, wenn sie beendet wird).

Ich verwende meistens print-Anweisungen oder gdb, wenn ich etwas Komplizierteres tun muss (es gibt viele Dokumentationen da draußen) - es hängt davon ab, was Sie reparieren oder bearbeiten möchten. Valgrind ist ein gutes Werkzeug, um nach Speicherlecks zu suchen - siehe https://wiki.gnome.org/Valgrind.

Wenn Sie glib/gtk/gobject-Warnungen erhalten, können Sie G_DEBUG=fatal_warnings gdb ausführen, um gdb zu starten, wodurch diese Warnungen unterbrochen werden (und Sie können über sie hinweg fortfahren).

Auf dieser Bibliothek - https://developer.gnome.org/glib/stable basiert so ziemlich alles in nemo (zusammen mit gtk3) - ich installiere normalerweise das 'devhelp'-Programm zusammen mit -doc-Paketen für diese, die Ich finde schneller als das Surfen in den Webdokumenten.

Alle 5 Kommentare

@mtwebster Ich denke, nemo-main.c ist der Haupteinstiegspunkt. Wenn ich einen Haltepunkt in VSCode einfüge und diese Datei ausführe, funktioniert es dann? Welchen Befehl soll ich geben, um nemo-main.c auszuführen.

Hallo, sorry, ich wollte früher antworten.

Die Art und Weise, wie Sie bauen, ist in Ordnung. Um nach dem ersten Build und der Installation mit dpkg-buildpackage Zeit zu sparen, werde ich stattdessen Folgendes ausführen:
sudo ninja -C debian/build install
-- um nachfolgende Male neu zu kompilieren - es ist viel schneller, und es müssen keine Pakete neu installiert werden (das System kümmert sich nicht wirklich darum, Sie kopieren vorhandene Dateien) - das ist gut, wenn Sie so tun, wie Sie sind - Hinzufügen Debug-Ausgabe usw. Verstehen Sie nur, dass Sie, wenn Sie einen weiteren "echten" Build mit dpkg-buildpackage durchführen möchten, sudo verwenden müssen, um den Build-Ordner zu bereinigen (ich verwende sudo git clean -fdx - dies gibt es zurück zu seinen unberührten Zustand).

Ich habe nie versucht, eine vollständige ide zu entwickeln, daher bin ich mir nicht einmal wirklich sicher, wie Breakpoints dort funktionieren. Die einfachste Methode besteht darin, ein G_BREAKPOINT() einzufügen, wo immer es aufhören soll - dann können Sie in gdb alles tun, was Sie tun müssen.

Sie müssen die Sitzung
nemo --quit
oder
killall nemo

Wenn Sie die Desktopsymbole debuggen möchten, wird dies mit nemo-desktop , also müssen Sie es stattdessen beenden / neu starten. (Sie müssen es beim ersten Mal zweimal beenden, der Sitzungsmanager versucht es genau einmal nach dem Start der Sitzung neu zu starten, wenn sie beendet wird).

Ich verwende meistens print-Anweisungen oder gdb, wenn ich etwas Komplizierteres tun muss (es gibt viele Dokumentationen da draußen) - es hängt davon ab, was Sie reparieren oder bearbeiten möchten. Valgrind ist ein gutes Werkzeug, um nach Speicherlecks zu suchen - siehe https://wiki.gnome.org/Valgrind.

Wenn Sie glib/gtk/gobject-Warnungen erhalten, können Sie G_DEBUG=fatal_warnings gdb ausführen, um gdb zu starten, wodurch diese Warnungen unterbrochen werden (und Sie können über sie hinweg fortfahren).

Auf dieser Bibliothek - https://developer.gnome.org/glib/stable basiert so ziemlich alles in nemo (zusammen mit gtk3) - ich installiere normalerweise das 'devhelp'-Programm zusammen mit -doc-Paketen für diese, die Ich finde schneller als das Surfen in den Webdokumenten.

@blueray453 danke der Nachfrage. Ich habe mich auch über die Ins und Outs gewundert.

@mtwebster danke für die Anleitung und den Hinweis in die richtige Richtung.

@icarter09 Das Leben ist hart, also muss man fragen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen