53 votes

Quels outils utilisez-vous pour développer des applications C ++ sur Linux?

Je développe des applications C ++ dans un environnement Linux. Les outils que j'utilise au quotidien incluent Eclipse avec le plugin CDT, gdb et valgrind.
Quels outils les autres utilisent-ils? Existe-t-il quelque chose pour Linux qui rivalise avec la fluidité de Microsoft Visual Studio?

52voto

Zan Lynx Points 23100

Je utiliser un tas de terminal windows. J'ai vim en cours d'exécution sur source intéressante fichiers, et g++ sortie sur un autre pour les erreurs de compilation ou d'une session gdb pour des erreurs d'exécution. Si j'ai besoin d'aide pour trouver des définitions I run cscope et l'utilisation de vim est cscope soutien à sauter partout.

Eclipse CDT est mon deuxième choix. Il est joli, mais énorme, maladroits et lents par rapport à vim.

En utilisant le terminal de windows et vim est très flexible, car je n'ai pas besoin de transporter 400 MO de Java autour de moi, je peux utiliser les sessions SSH depuis n'importe où.

Je utiliser valgrind quand j'ai besoin de trouver un problème de mémoire.

J'utilise strace d'attention à ce que mon logiciel est en train de faire sur un système de niveau d'appel. Cela me permet de nettoyer vraiment stupide code qui l'appelle, time(0) quatre fois dans une rangée ou fait trop d'appels d' poll() ou non bloquant read() ou des choses comme appelant read() sur un socket de lire 1 octet à la fois. (C'est super inefficace et paresseux!)

J'utilise objdump -d d'inspecter le code de l'ordinateur, en particulier pour les performances sensibles à l'intérieur des boucles. Voilà comment j'ai trouver des choses comme la lenteur de l'index du tableau de l'opérateur sur les chaînes de caractères par rapport à l'utilisation des itérateurs.

J'utilise oprofile pour essayer de trouver les points chauds dans le code optimisé, je trouve que ça fonctionne un peu mieux que gprof, et il peut faire des choses comme look pour les données et le cache d'instructions de justesse. Que pouvez-vous dire où vous pouvez déposer quelques prefetch conseils à l'aide de GCC __builtin_prefetch. J'ai essayé de l'utiliser pour trouver chaude mal prédit branches, mais ne pouvait pas obtenir que cela fonctionne pour moi.

Mise à jour: j'ai trouvé que la perf fonctionne bien mieux que oprofile. Au moins sur Linux. Apprendre à utiliser les perf et l'aimer comme je le fais.

24voto

Adam Points 6342

g++ bien sûr, mais aussi Code::Blocks qui est absolument fantastique de la croix-plate-forme de l'IDE (Win32, unix, Mac).

J'utilise tous les soirs (ou hebdomadaire, ces derniers temps) construit à partir du SVN. Il a presque toutes les cloches et de sifflets que vous attendez d'un IDE moderne. C'est vraiment une fantastique projet Open Source.

Aussi, sur Linux, vous obtenez la joie de l'utilisation de Valgrind qui est probablement le meilleur souvenir tracker (il fait d'autres choses aussi), outil que l'argent peut acheter. Et c'est gratuit :) traquer les fuites de mémoire et plus à l'aise.

Et il y a tellement beaucoup plus! Linux est une grande plate-forme de dev :)

(edit) vient de réaliser que vous avez mentionné Valgrind dans votre question, idiot moi pour le lire trop vite.

13voto

zhengtonic Points 566

Lorsque je développe des applications C ++ pour Linux, je préfère utiliser de nombreux outils de commande. Vim étendu avec beaucoup de plugins. Gdb avec ddd, valgrind, libefence et SCons (automake est pénible ... vous savez où)

12voto

Colin Points 3833
  • g ++

  • Emacs

  • ligne de commande bash

  • gdb-mode dans emacs (type MX gdb)

  • faire

9voto

thekidder Points 2237

emacs, cmake, gdb, git, valgrind. Ce n'est peut-être pas aussi fluide que Visual Studio, mais cela fonctionne bien et il est facile d'ajouter des fonctionnalités via des scripts bash ou emacs lisp.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X