Je programme une application en utilisant libpcap. lorsque je débogue l'application en mode normal, pcap ne peut pas obtenir le périphérique réseau. il semble que je doive déboguer l'application en root. Comment déboguer l'application en root? J'ai le mot de passe root. Je pense qu'Eclipse a une telle option qui peut ajouter une racine pour l'application de débogage, mais je ne sais pas comment le faire. veuillez aider.
Sudo visudo
<youruser> ALL=(root) NOPASSWD:/usr/bin/gdb
gdb
en Sudo -u <youruser> gdb
Mise à jour (et avertissement!):
Dans son commentaire, nategoose a souligné que cette réponse devrait être accompagnée d'un avertissement:
Permettre à un utilisateur d'utiliser Sudo
pour gdb
comme suggéré dans ma réponse en fait lui donne des privilèges d'administrateur qui dans de nombreux cas pourrait être un côté indésirable effet. Je considère donc la réponse appropriée dans un environnement où l'on ne suppose pas que l'utilisateur tenterait de nuire au système (par exemple, c'est votre propre ordinateur personnel ou une machine virtuelle)
Pour un environnement multi-utilisateurs (non fiable), je pense que ce serait un meilleur idead d'utiliser capacités de fichier unix pour permettre à gdb
de déboguer une application sans avoir besoin d'admin privilèges
Lancez Eclipse avec Sudo (juste pour être complet: http://www.Eclipse.org/forums/index.php?t=msg&goto=516838& )
Mise à jour: suivez la solution xmoex. Si vous exécutez Eclipse en tant que root (c'est-à-dire en utilisant Sudo), vos fichiers appartiendront à root ... ce que vous ne voulez probablement pas.
Vous pouvez utiliser gdbserver sur localhost pour attacher un processus existant, ce qui suit est la ligne de commande:
Sudo gdbserver :<listening port> --attach <pid>
Ou vous pouvez créer un nouveau processus en utilisant gdbserver:
Sudo gdbserver :<listening port> <process executable>
Ensuite, vous pouvez créer une configuration de débogage dans Eclipse, dans l'onglet débogueur, l'élément de débogage, sélectionnez gdbserver et entrez le port d'écoute dans l'onglet connexion dans le soufflet.
Une autre solution consiste à vous accorder (ou à l'exécutable gdb) le droit de faire des captures pcap comme mentionné ici . Avec quelque chose comme ça:
setcap cap_net_raw,cap_net_admin=eip /usr/bin/gdb
vous devriez pouvoir permettre de capturer des paquets dans gdb sans être root.
cette question a été posée il y a longtemps mais si cela peut aider quelqu'un, j'ouvre un bug dans bugzilla et ce court fil a résolu le problème: bug bugilla
Voici comment je l'ai fait:
Créer une application distante C/C++
Changer pour:
Sudo gdbserver :<port number> <path to application>;exit #
Cela exécutera essentiellement le gdbserver qui serait normalement exécuté par Eclipse à l'intérieur du Sudo, le '#' de fin empêchera la commande Eclipse de s'exécuter .