2015-03-14 1 views
1

J'écrivais beaucoup de code java ces derniers temps et je me suis habitué aux fonctionnalités de l'EDI comme sauter aux définitions.Comment naviguer dans le code source C?

Maintenant je travaille sur C (en lisant du code noyau) et je me demande s'il y a des outils similaires pour ce langage aussi.

Je suis au courant de ctags, cscope et LXR, mais ils semblent compter beaucoup sur la correspondance de motif et ne comprennent pas vraiment le code.

Par exemple, j'ai du code en utilisant struct file, comment naviguer vers la définition de cette structure afin de déterminer les champs disponibles?

Même si je sais qu'il est défini dans fs.h et il contient un champ de type fmode_t défini dans types.h comme unsigned __bitwise__, est-il un moyen d'obtenir la sémantique des bits individuels? (Probablement en trouvant à nouveau les constantes FMODE_* dans fs.h.)

Est-ce que ce type de navigation directe (semblable à une éclipse) est possible, ou dois-je vraiment faire beaucoup de devinettes si je ne connais pas tout cela auparavant?

+1

J'utilise OpenGrok pour cela: http://opengrok.github.io/OpenGrok/ C'est une interface web sur 'ctags' qui est extrêmement utile. Mais il ne parvient pas à trouver la définition de 'struct file' car les constructions' struct fichier * file' sont trop populaires dans le noyau. Mais cela fonctionne bien avec typedefs: http://code.metager.de/source/search?q=defs%3Afmode_t&path=%2Flinux%2Fstable%2F&project=linux – myaut

+0

> Est-ce que ce type de navigation directe (semblable à une éclipse) est possible < N'avez-vous pas essayé avec Eclipse CDT? AFAIK, il soutient cela. – myaut

+0

L'analyse correcte du code C (qui est nécessaire pour la navigation) est un problème difficile. Tous les #defines, #ifdefs, typedefs, différentes versions configurées en dehors du code source, etc., signifient que pour avoir 100% de code source correct, le code doit être complètement analysé comme par le compilateur. Certains IDE font un travail décent (j'utilise Qt Creator, mais je suis sûr qu'il existe de meilleurs IDE pour les projets C). Bon "Trouver dans les fichiers" est votre ami ici, et sachant comment l'utiliser. – hyde

Répondre

0

Si vous aimez l'éclipse, essayez nsight. C'est pour cuda, mais je pense que ça te donne ce que tu veux.

0

Essayez QtCreator pour le noyau Linux. J'ai écrit comment l'utiliser here. C'est le meilleur IDE pour le développement du noyau Linux que j'ai jamais vu.