J'utilise ubuntu 8.04.1 et j'essaie d'écrire un pilote de caractères en mode noyau. Quelle serait une bonne idée, idéalement avec la complétion de code, pour faire cela ?
Réponses
Trop de publicités?J'ai récemment cherché moi-même à résoudre ce genre de problème. J'ai trouvé crash et qemu/kvm incroyablement utiles pour les tests de base. Les gens vous disent souvent de ne pas tester un noyau/modules sur un système avec X, bien que j'ai généralement une console série et une configuration kdump pour attraper le vmcore afin de découvrir ce qui s'est passé exactement (plus utile que juste les messages de log).
Mon point de vue sur les éditeurs que j'ai utilisés :
Eclipse
Bien qu'elle soit basée sur java, la version de ganymede semble assez réactive, même lorsqu'il s'agit de projets C plus importants comme le noyau. L'intégration du gestionnaire de sources semble intéressante. Je m'occupe de plusieurs arbres (plus de 300) du noyau, donc il est bien utilisé.
L'indexeur est un peu à la traîne, mais après avoir ajusté certains paramètres de démarrage, il a semblé gérer l'indexation de quelques noyaux sans problème particulier. Les fonctions de construction automatique du projet C ne conviennent pas bien au noyau, mais il est assez facile d'ajouter une "construction" externe pour quelque chose comme le noyau. L'inconvénient est que le débogueur ne gère pas les vmcore/crashdumps, du moins je n'ai pas réussi à comprendre comment.
Le débogueur peut cependant connecter un noyau distant sous GDB, ce qui peut être utile pour ceux qui déboguent des systèmes vivants distants.
Vim/Gvim
J'entends des gens dire que VIM n'est pas un outil adapté à l'édition de grandes quantités de code, je trouve cela tout simplement faux. Gvim, avec cscope, NerdTree et ctags, permet de travailler avec de grandes bases de code de manière efficace et facile.
Un deuxième onglet ouvert avec "crash" ( http://people.redhat.com/anderson/crash_whitepaper/ ) en cours d'exécution m'a permis d'inspecter et de copier les noms/éléments entre l'éditeur. Le débogueur d'Eclipse n'ouvrait pas les fichiers vmcore, et je n'ai pas trouvé le moyen d'ouvrir un terminal d'une taille suffisante pour être utile en cas de crash. taille décente pour être utile avec le crash.
Emacs
Ce n'est pas mon éditeur préféré, mais j'ai appris les bases de son fonctionnement, et il est finalement très similaire à vim.
Kdevelop.
L'indexeur de KDevelop n'indexait pas plus de 3 arbres de code. Je n'ai pas cherché à savoir pourquoi. La complétion de code ne fonctionne pas si bien avec une base de code aussi grande.
Aucun de ces éditeurs ne s'intègre "bien" avec kvm/crash, ce qui est un domaine que j'aimerais voir amélioré.
J'espère que cela vous aidera.
J'ai utilisé vim/gvim avec ctags, cscope , c.vim .
Voir aussi le tutoriel "Faire de Vim votre IDE C/C++ en utilisant le plugin c.vim" ( http://www.thegeekstuff.com/2009/01/tutorial-make-vim-as-your-cc-ide-using-cvim-plugin/ )
Voici quelques captures d'écran : http://lug.fh-swf.de/vim/vim-c/screenshots-en.html
Si vous n'êtes pas à l'aise pour compiler le noyau vous-même, vous ne devriez probablement pas vous lancer dans le développement de modules. Je vous suggère donc de vous familiariser avec vim ou emacs - selon ce qui vous convient le mieux - et gcc, et d'apprendre à construire des choses à la main.
Pour être honnête, je n'ai jamais connu personne faisant du développement de noyau ou de module sous linux en utilisant un IDE... mais, peut-être qu'Eclipse peut supporter une construction de noyau ?
Kscope est exactement ce que vous voulez voir. Comme le dit la page d'accueil :
KScope est un frontal KDE pour Cscope. Il fournit un environnement d'édition des sources pour les grands projets C, tels que comme le noyau Linux.
Vous avez donc cscope + et IDE. Ou si vous n'êtes pas satisfait de celui-ci, utilisez votre éditeur préféré + le site de référence croisée linux
Bien qu'un peu "marginal", je recommande toujours Ultime++ pour le développement de Linux. Non seulement la bibliothèque elle-même est assez bonne, mais l'IDE est brillant pour tout type de développement C/C++.
Le problème avec le développement de noyaux, comme je suppose que vous le savez déjà, est qu'en dehors de la complétion du code et de la gestion de projet, vous n'obtiendrez pas grand chose d'autre de l'IDE. La plupart du débogage se fait en crachant des choses dans le journal système et la méditation :)