Nemo: Comment déboguer Nemo

Créé le 27 janv. 2020  ·  5Commentaires  ·  Source: linuxmint/nemo

J'utilise Linux Mint 19.3 Tricia .

Je suis en train de bricoler le code source de nemo. J'ai besoin d'un peu d'aide pour le débogage. J'ai vérifié https://forums.linuxmint.com/viewtopic.php?t=235125
https://stackoverflow.com/questions/31282505/how-to-debug-nemo-linux-mint-file-manager

La façon dont je modifie le code et essaie de déboguer est -

activé « dépôts de code source ».

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

Maintenant, j'édite le code. J'utilise printf( "key_1 %s \n", key_1); pour observer différentes variables.

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

ctrl+alt+backspace pour redémarrer Xorg

Ensuite, j'utilise

$ gdb nemo
(gdb) r

Ensuite, recherchez la sortie printf .

Je suis sûr qu'il existe une solution plus élégante. Existe-t-il un moyen de déboguer le code sans printf , dpkg-buildpackage , ctrl+alt+backspace ?

Commentaire le plus utile

Salut désolé, je voulais répondre plus tôt.

La façon dont vous construisez est bonne. Une chose que je ferai pour gagner du temps après la construction et l'installation initiales à l'aide de dpkg-buildpackage, c'est plutôt d'exécuter :
sudo ninja -C debian/build install
-- pour recompiler les fois suivantes - c'est beaucoup plus rapide, et il n'y a aucun paquet à réinstaller (le système s'en fiche, vous copiez sur des fichiers existants) - c'est bien pour faire comme vous êtes - ajouter sortie de débogage, etc. Comprenez simplement que lorsque vous voulez faire une autre construction "réelle" en utilisant dpkg-buildpackage, vous devrez utiliser sudo pour nettoyer le dossier de construction (j'utilise sudo git clean -fdx - cela le renvoie à son état primitif).

Je n'ai jamais essayé de développer une idée complète, donc je ne suis même pas vraiment sûr de la façon dont les points d'arrêt fonctionnent là-bas. La méthode la plus simple consiste à insérer un G_BREAKPOINT() là où vous voulez qu'il s'arrête - vous pouvez ensuite faire ce que vous devez faire dans gdb.

Vous n'avez pas besoin de redémarrer la session pour redémarrer nemo, faites simplement :
nemo --quit
ou
killall nemo

Si vous souhaitez déboguer les icônes du bureau, cela est exécuté avec nemo-desktop , vous devrez donc le tuer/redémarrer à la place. (Vous devez le tuer deux fois la première fois, le gestionnaire de session tente de le redémarrer exactement une fois après le démarrage de la session, si elle se termine).

J'utilise principalement des instructions print, ou gdb si je dois faire quelque chose de plus compliqué (il y a beaucoup de documentation là-bas) - cela dépend de ce que vous essayez de réparer ou de travailler. Valgrind est un bon outil pour rechercher des fuites de mémoire - consultez https://wiki.gnome.org/Valgrind.

Si vous recevez des avertissements glib/gtk/gobject, vous pouvez exécuter G_DEBUG=fatal_warnings gdb pour démarrer gdb, ce qui interrompra ces avertissements (et vous pourrez continuer au-delà).

Cette bibliothèque - https://developer.gnome.org/glib/stable est ce sur quoi à peu près tout est basé dans nemo (avec gtk3) - j'installe généralement le programme 'devhelp', avec les packages -doc pour ceux-ci, qui Je trouve plus rapide que de parcourir les docs web.

Tous les 5 commentaires

@mtwebster Je pense que nemo-main.c est le principal point d'entrée. Si je mets un point d'arrêt dans VSCode et que j'exécute ce fichier, cela fonctionnera-t-il ? Quelle commande dois-je donner pour exécuter nemo-main.c .

Salut désolé, je voulais répondre plus tôt.

La façon dont vous construisez est bonne. Une chose que je ferai pour gagner du temps après la construction et l'installation initiales à l'aide de dpkg-buildpackage, c'est plutôt d'exécuter :
sudo ninja -C debian/build install
-- pour recompiler les fois suivantes - c'est beaucoup plus rapide, et il n'y a aucun paquet à réinstaller (le système s'en fiche, vous copiez sur des fichiers existants) - c'est bien pour faire comme vous êtes - ajouter sortie de débogage, etc. Comprenez simplement que lorsque vous voulez faire une autre construction "réelle" en utilisant dpkg-buildpackage, vous devrez utiliser sudo pour nettoyer le dossier de construction (j'utilise sudo git clean -fdx - cela le renvoie à son état primitif).

Je n'ai jamais essayé de développer une idée complète, donc je ne suis même pas vraiment sûr de la façon dont les points d'arrêt fonctionnent là-bas. La méthode la plus simple consiste à insérer un G_BREAKPOINT() là où vous voulez qu'il s'arrête - vous pouvez ensuite faire ce que vous devez faire dans gdb.

Vous n'avez pas besoin de redémarrer la session pour redémarrer nemo, faites simplement :
nemo --quit
ou
killall nemo

Si vous souhaitez déboguer les icônes du bureau, cela est exécuté avec nemo-desktop , vous devrez donc le tuer/redémarrer à la place. (Vous devez le tuer deux fois la première fois, le gestionnaire de session tente de le redémarrer exactement une fois après le démarrage de la session, si elle se termine).

J'utilise principalement des instructions print, ou gdb si je dois faire quelque chose de plus compliqué (il y a beaucoup de documentation là-bas) - cela dépend de ce que vous essayez de réparer ou de travailler. Valgrind est un bon outil pour rechercher des fuites de mémoire - consultez https://wiki.gnome.org/Valgrind.

Si vous recevez des avertissements glib/gtk/gobject, vous pouvez exécuter G_DEBUG=fatal_warnings gdb pour démarrer gdb, ce qui interrompra ces avertissements (et vous pourrez continuer au-delà).

Cette bibliothèque - https://developer.gnome.org/glib/stable est ce sur quoi à peu près tout est basé dans nemo (avec gtk3) - j'installe généralement le programme 'devhelp', avec les packages -doc pour ceux-ci, qui Je trouve plus rapide que de parcourir les docs web.

@blueray453 merci d'avoir demandé. Je me suis également demandé les entrées et les sorties pour cela.

@mtwebster merci pour les conseils et pointer dans la bonne direction.

@icarter09 la vie est dure alors il faut demander.

Cette page vous a été utile?
0 / 5 - 0 notes