IDE C ++ per Linux? [chiuso]


209

Voglio espandere i miei orizzonti di programmazione su Linux. Un set di strumenti di base valido e affidabile è importante e cosa c'è di più essenziale di un IDE?

Ho potuto trovare questi argomenti SO:

Non sto cercando un IDE leggero . Se un IDE vale i soldi, lo pagherò, quindi non è necessario che sia gratuito.

La mia domanda, quindi:

A che serve l'IDE di programmazione C ++ per Linux?

I minimi sono abbastanza standard: evidenziazione della sintassi, completamento del codice (come intellisense o sua controparte Eclipse) e debug integrato (ad es. Breakpoint di base).

L'ho cercato da solo, ma ce ne sono così tanti che è quasi impossibile separare il buono dai cattivi a mano, specialmente per uno come me che ha poca esperienza di codifica C ++ in Linux. So che Eclipse supporta il C ++ e mi piace molto quell'IDE per Java, ma va bene per il C ++ e c'è qualcosa di meglio?

Il secondo post in realtà ha alcuni buoni suggerimenti, ma ciò che mi manca è ciò che rende esattamente l'IDE suggerito così buono per l'utente, quali sono i suoi (dis) vantaggi?

Forse la mia domanda dovrebbe quindi essere:

Quale IDE proponi (date le tue esperienze) e perché?


1
Questa è, credo, la quarta domanda "Quale IDE dovrei usare su Linux" tra un giorno o due.
Ben Collins,

Forse dovresti guardare la data in cui è stata posta questa domanda ... o indicare qui le domande più recenti
sven

Nell'ultima versione, Eclipse ha integrato eclipse.org/linuxtools nel suo treno di rilascio - quel progetto mira a rendere Eclipse un IDE C / C ++ più completo su Linux integrando strumenti specifici di Linux.
Jean Hominal,

Risposte:


259

Inizialmente: confusione

Quando avevo originariamente scritto questa risposta, di recente avevo fatto il passaggio da Visual Studio (con anni di esperienza) a Linux e la prima cosa che ho fatto è stato cercare di trovare un IDE ragionevole. Al momento questo era impossibile: non esisteva un buon IDE.

Epifania: UNIX è un IDE. Tutto. 1

E poi ho capito che l'IDE in Linux è la riga di comando con i suoi strumenti:

  • Per prima cosa hai impostato la shell
  • e il tuo editore; scegli il tuo veleno: entrambi sono all'avanguardia:

A seconda delle tue esigenze, dovrai quindi installare e configurare diversi plugin per far funzionare bene l'editor (questa è la parte fastidiosa). Ad esempio, la maggior parte dei programmatori su Vim beneficerà del plug-in YouCompleteMe per il completamento automatico intelligente.

Una volta fatto, la shell è la tua interfaccia di comando per interagire con i vari strumenti - Debugger (gdb), Profiler (gprof, valgrind), ecc. Puoi impostare il tuo progetto / ambiente di creazione usando Make , CMake , SnakeMake o uno qualsiasi dei vari alternative. E gestisci il tuo codice con un sistema di controllo della versione (la maggior parte delle persone usa Git ). Utilizzate anche tmux (precedentemente anche screen) per multiplex (= pensate a più finestre / schede / pannelli) e mantenete la vostra sessione terminale.

Il punto è che, grazie alla shell e ad alcune convenzioni di scrittura degli strumenti, queste si integrano tutte . In questo modo la shell di Linux è un ambiente di sviluppo veramente integrato , completamente alla pari con altri IDE moderni. (Ciò non significa che i singoli IDE non abbiano funzionalità che potrebbero mancare nella riga di comando, ma è vero anche il contrario.)

A ognuno il suo

Non riesco a sopravvalutare quanto bene funzioni il flusso di lavoro sopra una volta che hai preso l'abitudine. Ma alcune persone preferiscono semplicemente gli editor grafici e negli anni da quando questa risposta è stata scritta originariamente, Linux ha acquisito una suite di eccellenti IDE grafici per diversi linguaggi di programmazione (ma non, per quanto ne so, per C ++). Provali anche se - come me - finisci per non usarli. Ecco solo una selezione piccola e parziale:

Tieni presente che questo elenco è lungi dall'essere completo.


1 Ho rubato quel titolo dal commento di dsm.

2 Mi riferivo a Vim qui. E mentre il semplice Vim è ancora più che capace, Neovim è un riavvio promettente, e ha modernizzato alcune vecchie verruche.


223
sono fortemente in disaccordo. un ide decente è importante, qualunque cosa tu stia lavorando. aumenta drasticamente la produttività. uso i blocchi di codice e trovo che tornare al VI sia quasi impossibile. ho codificato su Mac, Win e Linux, e sebbene trovo Visual Studio come il migliore IDE, i blocchi di codice si avvicinano.
DavidG,

35
David, forse potresti dettagliare (la tua risposta ...) cosa ti manca esattamente nella toolchain che ho descritto che un IDE offre. Come ho detto, vengo da un forte background IDE e il mio aumento di produttività è stato esattamente il tuo contrario.
Konrad Rudolph,

48
Quale supporto di refactoring offre Vim? In Eclipse (che funziona su Linux), posso cambiare il nome di qualsiasi metodo Java che desidero, anche se viene chiamato in 300 punti. Puoi farlo facilmente in Vim?
quant_dev,

25
quant_dev: il refactoring richiede di analizzare il codice sorgente in qualche modo. Per quanto ne so, nessun modulo VIM lo fa, quindi la risposta alla tua domanda è "nessuna". Questo è uno dei motivi per preferire un IDE per linguaggi centrati sull'IDE come Java. Poiché il supporto al refactoring (ecc.) Per C ++ è comunque minimo (anche negli IDE), ciò non si applica al C ++.
Konrad Rudolph,

11
@hasen: oh ma gran parte può . Rinominare in base all'ambito, ad esempio. E credimi, questo è grande . E Ecplise (ad esempio) può risparmiare molto lavoro qui.
Konrad Rudolph,

86

Il mio preferito è l' IDE CodeLite 2.x.

vedi: http://www.codelite.org

La decisione di utilizzare CodeLite si basava su una ricerca riguardante il seguente IDE C ++ per Linux:

  • Eclipse Galileo con plug-in CDT
  • NetBeans 6.7 (che è anche la base per l'IDE SunStudio)
  • KDevelop4
  • CodeBlocks 8.02
  • CodeLite 2.x

Dopo tutto quello che ho deciso di utilizzare CodeLite 2.x .

Di seguito ho elencato alcuni pro e contro riguardanti gli IDE C ++ menzionati. Si noti che ciò riflette solo la mia opinione personale!

EDIT : peccato che SOF non supporti le tabelle, quindi devo scrivere nei paragrafi ...

Eclipse Galileo con plug-in CDT

Professionisti:

  • ragionevole veloce
  • supporta anche Java, Perl (con plugin EPIC)
  • comunemente usato e ben mantenuto
  • disponibile anche per altri tipi di SO (Windows, MacOS, Solaris, AIX (?))

Contro:

  • La GUI è molto confusa e in qualche modo incoerente, non molto intuitiva
  • peso pesante
  • Supporta solo CVS (AFAIK)

NetBeans 6.7 (notare che questa è anche la base per l'IDE SunStudio)

Professionisti:

  • una delle GUI più intuitive che abbia mai visto
  • supporta anche Java, Python, Ruby
  • integra CVS, SVN, Mercurial
  • comunemente usato e ben mantenuto
  • disponibile anche per altri tipi di SO (Windows, MacOS, Solaris)

Contro:

  • estremamente lento
  • peso pesante
  • usa Spaces per il rientro, che non è la politica nel mio lavoro. Sono sicuro che questo è configurabile, ma non sono riuscito a scoprire come farlo

KDevelop4 (nota: non ho fatto molti test su di esso)

Professionisti:

  • comunemente usato su Linux
  • integra CVS, SVN, Mercurial

Contro:

  • la GUI sembra in qualche modo antiquata
  • peso pesante
  • molto specifico per l'ambiente KDE

CodeBlocks 8.02 (nota: non ho fatto molti test su di esso)

Professionisti:

  • ragionevole veloce

Contro:

  • la GUI sembra un po 'vecchio stile (anche se ha una bella schermata di avvio)
  • i caratteri nell'editor sono molto piccoli
  • alcune icone (ad es. le icone relative al debugger che iniziano / avanzano) sono molto piccole
  • nessuna integrazione del controllo del codice sorgente

CodeLite 2.x (nota: questo è il mio preferito personale)

Professionisti:

  • la GUI migliore, moderna e intuitiva che abbia mai visto su Linux
  • leggero
  • ragionevole veloce
  • integra SVN
  • disponibile anche su altri sistemi operativi (Windows, MacOS, Solaris (?))

Contro:

  • nessuna integrazione CVS (questo è importante per me perché devo usarlo sul posto di lavoro)
  • nessun supporto per Java, Perl, Python (sarebbe bello avere)

14
Eclispe ha il supporto per Hg, Git, SVN e altri tramite plugin. E gli schermi di avvio / splash succhiano enormi palle. Risucchiano risorse e offrono pochissimi benefici. E di solito compaiono davanti a qualsiasi cosa io stia lavorando mentre aspettano il caricamento dell'app. PortableApps ed Eclipse devono liberarsene.
Chris K,

4
Codelite ha la stessa scorciatoia da tastiera di Visual Studio per il debug, rendendolo molto user-friendly per i tossicodipendenti di Visual.
Raoul Supercopter

Potrebbe essere qui a battere un vecchio cavallo, ma la GUI dell'eclissi IMO non ha eguali. Sì, all'inizio è difficile da imparare, ma è un po 'come Vi, dove la produttività inizia a salire alle stelle dopo aver salito la ripida curva di apprendimento. Per dimostrare un punto, prova a premere Ctrl + 3 - una delle fantastiche funzioni di Eclipse IMO.
kizzx2,

"Contro: usa Spaces per il rientro [...] Sono sicuro che questo è configurabile, ma non sono riuscito a scoprire come farlo." Ciò dimostra che non hai mai usato gli strumenti, altrimenti alla fine avresti trovato l'opzione.
Johan Boulé,

5
CodeLite è incredibile, come masticare la gomma da masticare dentyne. Ti lascerà in bocca un sapore fresco e di menta. Eclipse, pur essendo ricco di funzionalità, ti dà anche questo vomito dopo il gusto quando lo usi. So che sembra infantile dire, ma è davvero la migliore metafora per spiegare la "sensazione" di usarli. Sono sicuro che altri saranno d'accordo con me.
Didier A.

75
  1. Code :: Blocks
  2. Eclipse CDT

Presto scoprirai che gli IDE non sono sufficienti e dovrai comunque imparare la toolchain GCC (che non è difficile, almeno apprendere le funzionalità di base). Ma nessun danno nel ridurre il dolore di transizione con gli IDE, IMO.


+1 per i blocchi di codice e sì, sicuramente vorrai imparare almeno come compilare ed eseguire i tuoi programmi da una shell, perché code :: blocks ha alcuni difetti.
Earlz,

Eclipse non è affatto leggero IMHO, Code :: Blocks ... just
rubenvb

7
-1 per blocchi di codice. -1 per l'eclissi. Entrambi cambiano le loro UI durante il debug. Al punto in cui un utente alle prime armi di solito si sente perso. Entrambi non possono eseguire il debug del fork. Entrambi hanno problemi spiacevoli con l'integrazione SVN / CVS. (L'ultima Eclipse in tandem con Subclipse si rompe in Gnome dal 28/04/11 e si blocca ogni 10 minuti). L'impostazione del controllo del codice sorgente è un incubo e l'integrazione con questi IDE è altrettanto difficile.
bleepzter,

4
@bleepzter -1 per l'utilizzo di SVN / CVS per iniziare;)
OneOfOne

1
Mercurial, Git e Bazaar che sono di gran lunga superiori in ogni modo.
OneOfOne,

66

Una risposta rapida, solo per aggiungere un po 'più di conoscenza a questo argomento:
devi assolutamente dare un'occhiata a NetBeans . Netbeans 6.7 ha le seguenti caratteristiche:

  • Progetti e modelli C / C ++: supporta l'evidenziazione della sintassi, il completamento automatico del codice, il rientro automatico.
  • Ha un debugger C / C ++
  • Supporta configurazioni del compilatore, Configuration Manager e supporto Makefile (con una procedura guidata).
  • Ha una finestra Classi, una finestra Usi e una finestra (o pannello) di navigazione dei file.
  • Una vista di espansione Macro e anche suggerimenti .
  • Supporto per lo sviluppo di QT .

Penso che sia una sostituzione di Visual Studio perfetta (e molto migliore) e un ottimo strumento per imparare il C / C ++.

In bocca al lupo!


2
È anche ottimo per c ++. Ha il miglior parser di lingua di sempre.
Johan Boulé,

1
Mi è piaciuto Netbeans molto più di Eclipse per lo sviluppo di c ++.
Thomas Langston,

9
NetBeans è molto più divertente di Eclipse, vorrei davvero che più persone iniziassero a rendersene conto.
Didier A.

1
Dopo aver combattuto con Eclipse per settimane, ho scoperto questo, sono passato a NetBeans e grazie! Ha un'interfaccia più gradevole, è più reattivo, inuitivo e personalizzabile. Batte Eclipse a mani basse
Frederik,

1
Un altro voto qui per NetBeans molto meglio di Eclipse. Ha anche di gran lunga la migliore emulazione Vim (come plugin) che io abbia mai usato.
Thoughton


32

potresti chiarire un po 'di più come è stato per te, cosa hai dovuto cambiare. Forse potresti indicarmi la giusta direzione fornendo alcuni collegamenti alle informazioni che hai usato.

La mia prima fonte erano in realtà le manpagine degli strumenti . Basta digitare

$ man toolname

sulla riga di comando ( $qui fa parte del prompt, non dell'input).

A seconda della piattaforma, sono abbastanza ben scritti e possono anche essere trovati su Internet. Nel caso make, in realtà ho letto la documentazione completa che ha richiesto alcune ore. In realtà, non penso che ciò sia necessario o utile nella maggior parte dei casi, ma avevo alcuni requisiti speciali nei miei primi incarichi su Linux che richiedevano un makefile sofisticato. Dopo aver scritto il makefile l'ho dato a un collega esperto che ha apportato alcune piccole modifiche e correzioni. Dopo quello, praticamente lo sapevo make.

Ho usato GVIM perché ho avuto qualche (ma non molto) esperienza precedente lì, non posso dire nulla su Emacs o alternative. Trovo che aiuti davvero a leggere il .gvimrcfile di configurazione degli altri . Molte persone lo mettono sul web. Ecco il mio .

Non provare a padroneggiare tutte le binutils contemporaneamente, ci sono troppe funzioni. Ma ottieni una panoramica generale in modo da sapere dove cercare quando hai bisogno di qualcosa in futuro. Si dovrebbe , tuttavia, conoscere tutti i parametri importanti per g++e ld(lo strumento linker GCC che viene richiamato automaticamente se non quando esplicitamente impedito).

Inoltre sono curioso, hai il completamento del codice e l'evidenziazione della sintassi quando scrivi il codice?

Evidenziazione della sintassi: sì, e molto meglio di Visual Studio. Completamento del codice: sì- ish . Innanzitutto, devo ammettere che non ho usato il completamento del codice C ++ anche in Visual Studio perché (rispetto a VB e C #) non era abbastanza buono. Non lo uso spesso ora, tuttavia, GVIM ha il supporto del completamento del codice nativo per C ++. In combinazione con la libreria ctags e un plug-in come taglist questo è quasi un IDE.

In realtà, quello che mi ha fatto iniziare è stato un articolo di Armin Ronacher. Prima di leggere il testo, guarda gli screenshot alla fine di esso!

devi compilare prima di ottenere errori (sintassi)?

Sì. Ma questo è lo stesso per Visual Studio, no (non ho mai usato Whole Tomato)? Ovviamente, l'evidenziazione della sintassi mostrerà parentesi non corrispondenti ma questo è tutto.

e come esegui il debug (ripensaci, ecc.)?

Uso gdbquale è uno strumento da riga di comando. C'è anche un frontend grafico chiamato DDD. gdbè uno strumento di debug moderno e può fare tutto ciò che puoi fare in un IDE. L'unica cosa che mi dà davvero fastidio è leggere una traccia dello stack perché le righe non sono rientrate o formattate, quindi è davvero difficile scansionare le informazioni quando si utilizzano molti modelli (cosa che faccio). Ma quelli ingombrano anche la traccia dello stack negli IDE.

Come ho detto, ho avuto il "piacere" di impostare i miei primi passi nel linguaggio di programmazione Java usando Windows Notepad e il compilatore Java della riga di comando al liceo, ed è stato, .. wel un incubo! certamente quando potevo confrontarlo con altri corsi di programmazione che avevo allora in cui avevamo IDE decenti

Non dovresti nemmeno provare a confrontare un editor moderno e completo come Emacs o GVIM con Blocco note. Il blocco note è un TextBoxcontrollo abbellito e questo fa davvero la differenza. Inoltre, lavorare sulla riga di comando è un'esperienza molto diversa in Linux e Windows. Windows cmd.exeè gravemente paralizzato. PowerShell è molto meglio.

/ EDIT: dovrei menzionare esplicitamente che GVIM ha la modifica a schede (come nella navigazione a schede, non tabs-vs-spazi)! Mi ci sono voluti anni per trovarli, anche se non sono affatto nascosti. Digita :tabeinvece di plain :equando apri un file o ne crei uno nuovo e GVIM creerà una nuova scheda. È possibile passare da una scheda all'altra utilizzando il cursore o diverse scorciatoie (a seconda della piattaforma). Il tasto gt(digita g, quindi tin modalità comando) dovrebbe funzionare ovunque, e passa alla scheda successiva o alla scheda n. n se è stato fornito un numero. Digita :help gtper ottenere ulteriore assistenza.


@confuzatron: No, utilizzo gdb per diversi motivi. Ancora più importante, di solito lavoro senza alcun server X in esecuzione. Inoltre, sono un po 'a disagio per il fatto che DDD non ha visto alcun aggiornamento da molto tempo. D'altra parte, la proprietà del progetto è appena cambiata e sembrano esserci cambiamenti in corso.
Konrad Rudolph,

Grazie per le informazioni sulla scheda wrt gvim, mai nuovo :)
Letholdrus,

VS2010 evidenzia errori di sintassi senza compilazione.
Candy Chiu,

@Candy true, VS2010 ha cambiato molte cose in questo senso e ha aggiunto funzionalità avanzate per la compilazione in background. Nel frattempo, gvim ha anche aggiunto molte funzionalità tramite plug-in. In particolare, puoi probabilmente ottenere l'evidenziazione degli errori di sintassi senza compilazione tramite il clang_completeplug-in ora. Questa risposta è del 2009 e alcune parti non sono aggiornate. Ma ci sono stati miglioramenti da tutte le parti, quindi più o meno uniforme.
Konrad Rudolph,

25

Non ripetere una risposta, ma penso di poter aggiungere un po 'di più.

Slickedit è un IDE eccellente.

Supporta bene basi di codice di grandi dimensioni senza rallentare o passare tutto il tempo a indicizzare. (Questo è un problema che ho avuto con il cdt di eclipse). La velocità di Slickedit è probabilmente la cosa più bella al riguardo, in realtà.
Il completamento del codice funziona bene e ci sono molte opzioni per formattazione automatica, abbellimento e refactoring.
Ha un debug integrato.
Ha il supporto plug-in e una comunità abbastanza attiva che li crea.
In teoria, dovresti essere in grado di integrarti bene con le persone che fanno le cose tradizionali del makefile, in quanto ti consente di creare un progetto direttamente da uno, ma non ha funzionato nel modo più fluido che avrei voluto quando l'ho provato.
Oltre a Linux, ci sono versioni di Mac e Windows, se ne hai bisogno.


23

Come un vecchio UNIX, uso sempre Emacs. Ma questo ha una curva di apprendimento piuttosto ripida e lunga, quindi non sono sicuro di poterlo consigliare ai nuovi arrivati.

Non esiste davvero un "buon" IDE per Linux. Eclipse non è molto buono per C / C ++ (CDT sta migliorando, ma non è ancora molto utile). Gli altri mancano di tutte le funzionalità che stai cercando.

È davvero importante imparare come funzionano tutti i singoli strumenti (gcc, make, gdb, ecc.). Dopo averlo fatto, potresti scoprire che il modo di fare le cose in Visual Studio è molto limitante.


Eclipse CDT "non ancora molto utile?" L'elaborazione sarebbe utile. Lo trovo estremamente utile (e facile da usare).
John Zwinck,

"non ancora molto utile": il completamento automatico spesso non funziona, la navigazione verso dichiarazioni o usi di funzioni non funziona, l'evidenziazione della sintassi non funziona sempre, il refactoring non funziona, ecc. È poco meglio dell'uso di vi. L'interfaccia utente del frontend GDB è l'unica cosa che vale la pena usare, IMHO.
Kristopher Johnson,

Non ho davvero provato il refactoring con il CDT, ma le altre cose sembrano funzionare. Noterò che eseguo Eclipse con alcuni parametri di configurazione di utilizzo della memoria max piuttosto grandi (ho 8-12 GB di RAM), ma sembra che vada bene.
John Zwinck,

L'ultima volta che ho provato Eclipse CDT, il parser sintassi / semantica per il completamento automatico ha bloccato l'intero IDE per 8 secondi ogni volta che è stato invocato. Ha reso l'intera funzione inutile. Non riesco a credere che la cosa non sia andata nel suo stesso thread. Questo è stato due anni fa, quindi si spera ora risolto. (giusto?)

Trovo CDT fantastico per le mie incursioni in QT e Boost. Su Windows con Mingw ha i suoi problemi, ma in un ambiente Posix corretto il completamento automatico funziona alla grande! La navigazione verso le dichiarazioni è in realtà l'unico buco evidente. Ma considerando che il C ++ può avere più dichiarazioni identiche, non sono sorpreso. Questo è un problema più difficile da risolvere rispetto a Java.
Chris K,

18

Dai un'occhiata a Netbeans, è scritto in Java, quindi avrai lo stesso ambiente indipendentemente dal tuo sistema operativo e supporta molto più di un semplice C ++.

Non proverò a convincerti, perché penso che gli IDE possano essere una scelta molto personale. Per me migliora la mia produttività essendo veloce, supportando le lingue in cui codice e ha le caratteristiche standard che ti aspetteresti da un IDE.


5
Posso solo aggiungere il mio +1 a questo. netbeans ha il miglior parser di linguaggio c ++ che abbia mai visto in un ide; batte il cdt di eclipse.
Johan Boulé,

18

Solo un rapido seguito per questa domanda ...

È passato un mese da quando ho iniziato a usare Vim come mio principale strumento 'GUI' per la programmazione di C ++ in Linux. All'inizio la curva di apprendimento era davvero un po 'ripida, ma dopo un po' e con le giuste opzioni attivate e gli script in esecuzione ho davvero capito!

Adoro il modo in cui puoi modellare Vim per soddisfare le tue esigenze; basta aggiungere / modificare i mapping dei tasti e Vim si trasforma in un 'IDE' altamente produttivo.

Anche la toolchain per compilare e compilare un programma C ++ su Linux è davvero intuitiva. make e g ++ sono gli strumenti che userete.

Il debugger ddd non è comunque così buono, ma forse è perché non ho avuto il tempo di padroneggiarlo correttamente.

Quindi, per chiunque sia, o stia cercando un buon IDE C ++ in Linux, proprio come me, la tua scommessa migliore risiede negli strumenti standard disponibili in Linux stesso (Vim, g ++, ddd) e dovresti davvero almeno provare a usare loro, prima di cercare qualcos'altro ...

Ultimo ma non meno importante, voglio davvero ringraziare Konrad per la sua risposta qui, mi ha davvero aiutato a trovare la mia strada nell'ambiente di sviluppo Linux, grazie!

Inoltre non sto chiudendo questa domanda, quindi le persone possono ancora reagire o forse anche aggiungere nuovi suggerimenti o aggiunte alle risposte già davvero belle ...


Riesci a far funzionare le funzionalità IntelliSense in Vim + ctags? In realtà non solo il completamento automatico, ma le informazioni sensibili al contesto come l'elenco dei parametri per la funzione, ecc.?
kizzx2,

@ kizzx2: , ci sono molte opzioni .
Fred Nurk,


12

La risposta più breve è: scegliere qualsiasi "editor" che ti piace, quindi utilizzare la console GDB o un semplice front-end GDB per eseguire il debug dell'applicazione. I debugger sono dotati di IDE fantasiosi come Netbeans fa schifo per C / C ++. Uso Netbeans come editor e Insight e console GDB come debugger.

Con insight, hai una bella interfaccia grafica e la potenza pura di GDB.

Non appena ti abituerai ai comandi GDB, inizierai ad amarlo poiché puoi fare cose che non sarai mai in grado di fare usando una GUI. Puoi anche usare Python come linguaggio di script se stai utilizzando GDB 7 o versione più recente.

La maggior parte delle persone qui ha prestato maggiore attenzione agli "Redattori" degli IDE. Tuttavia, se stai sviluppando un grande progetto in C / C ++, potresti facilmente dedicare più del 70% del tuo tempo ai "debugger". I debugger degli IDE fantasiosi sono almeno 10 anni indietro rispetto a Visual Studio. Ad esempio, Netbenas ha interfacce molto simili con Visual Studio. Ma il suo debugger presenta numerosi svantaggi rispetto a Visual Studio.

  1. Molto lento per visualizzare anche un array con solo poche centinaia di elementi
  2. Nessuna evidenziazione per il valore modificato (per impostazione predefinita, Visual Studio mostra i valori modificati nelle finestre dell'orologio in rosso)
  3. Capacità molto limitata di mostrare memoria.
  4. Non è possibile modificare il codice sorgente, quindi continuare l'esecuzione. Se un bug impiega molto tempo a colpire, ti piacerebbe cambiare l'origine e applicare le modifiche in tempo reale e continuare a eseguire l'applicazione.
  5. Non è possibile modificare la "prossima istruzione" per l'esecuzione. In Visual Studio, è possibile utilizzare "Imposta istruzione successiva" per modificare la modalità di esecuzione dell'applicazione. Anche se questa funzione potrebbe causare l'arresto anomalo dell'applicazione se non utilizzata correttamente, ma ti farà risparmiare molto tempo. Ad esempio, se lo stato dell'applicazione non è corretto, ma non si conosce la causa dei problemi, è possibile eseguire nuovamente una determinata area dei codici sorgente senza riavviare l'applicazione.
  6. Nessun supporto integrato per STL come vector, list, deque e map ecc.
  7. Nessun punto di controllo. È necessario disporre di questa funzione quando è necessario arrestare l'applicazione nel momento in cui una variabile viene modificata. I computer basati su Intel dispongono di punti di controllo hardware in modo che i punti di controllo non rallentino il sistema. Potrebbero essere necessarie molte ore per trovare alcuni bug difficili da trovare senza utilizzare i punti di controllo. "Visual Studio" chiama "watch pointer" come "Data BreakPoint".

L'elenco può essere molto più lungo.

Ero così frustrato dagli svantaggi dei Netbeans o di altri IDE simili, così ho iniziato a studiare GDB stesso. Ho scoperto che lo stesso GDB è molto potente. GDB non ha tutti gli "svantaggi" sopra menzionati. In realtà, GDB è molto potente, è anche meglio di Visual Studio in molti modi. Qui ti faccio solo un esempio molto semplice.

Ad esempio, hai un array come:

struct IdAndValue
{
  int ID;
  int value;
};


IdAndValue IdAndValues[1000];

Quando l'applicazione si interrompe e si desidera esaminare i dati in IdAndValues. Ad esempio, se si desidera trovare gli ordinali e i valori nella matrice per un particolare "ID", è possibile creare uno script come il seguente:

define PrintVal 
set $i=0
printf "ID = %d\n", $arg0
while $i<1000
  if IdAndValues[$i].ID == $arg0
    printf "ordinal = %d, value = %d\n", $i, IdAndValues[$i].vaue
    set $i++
  end
end
end

È possibile utilizzare tutte le variabili nell'applicazione nel contesto corrente, le proprie variabili (nel nostro esempio, è $ i), gli argomenti passati (nel nostro esempio, è $ arg0) e tutti i comandi GDB (predefiniti o definiti dall'utente ).

Utilizzare PrintVal 1 dal prompt GDB per stampare i valori per ID "1"

A proposito, NetBeans viene fornito con una console GDB, ma utilizzando la console, è possibile arrestare in modo anomalo Netbeans. E credo sia per questo che la console è nascosta per impostazione predefinita in NetBeans


Buon punto. Ma sfortunatamente GDB ha una curva di apprendimento estremamente ripida. Lo sto usando da anni e non ho ancora usato le macro e (anche se so che è possibile tramite le macro!) Qualsiasi codice STL che lancio non può essere migliorato come nei moderni IDE.
Konrad Rudolph,

Ho trascorso 2 giorni per padroneggiare la maggior parte dei comandi in GDB. Una volta che conosci la potenza pura di GBD, non guarderai mai indietro. Ti farà risparmiare un sacco di tempo quando risolvi i bug difficili da trovare.
Charles Zhang,

11

Sto usando " Geany " trovato bene finora, il suo IDE veloce e leggero.

Tra le caratteristiche di Geany ci sono :

  • Codice pieghevole
  • Salva sessione
  • Funzioni IDE di base come evidenziazione della sintassi, schede, rientro automatico e completamento del codice
  • Semplice gestione del progetto
  • Sistema di costruzione
  • Color picker (sorprendentemente utile durante lo sviluppo web)
  • Emulazione terminale integrata
  • Suggerimenti per le chiamate
  • Elenchi di simboli
  • Completamento automatico di costrutti comuni (come if, else, while, ecc.)

10

Se ti piace Eclipse per Java, ti consiglio Eclipse CDT. Nonostante il supporto C / C ++ non sia così potente come per Java, offre comunque la maggior parte delle funzionalità. Ha una bella funzione chiamata Managed Project che semplifica il lavoro con progetti C / C ++ se non si ha esperienza con Makefile. Ma puoi ancora usare Makefile. Faccio la codifica C e Java e sono davvero contento del CDT. Sto sviluppando il firmware per un dispositivo incorporato in C e un'applicazione in Java che parla con questo dispositivo ed è davvero bello usare lo stesso ambiente per entrambi. Immagino che probabilmente mi rende più produttivo.


9

Adoro il modo in cui alla gente manca completamente la richiesta nella domanda originale per un IDE. Linux NON è un IDE. Non è proprio quello che significano quelle parole. Ho imparato c e c ++ usando vi e gcc e make, e non sto dicendo che non sono strumenti adeguati, ma NON sono un IDE. Anche se usi strumenti più elaborati come vim o emacs o qualsiasi editor di fantasia che desideri, digitare i comandi su una riga di comando non è un IDE.

Inoltre, sapete tutti che esiste come parte di Visual Studio, giusto? L'idea che un IDE stia "limitando" è semplicemente stupida se è possibile utilizzare l'IDE per accelerare alcune cose, ma se necessario è ancora in grado di ricorrere alle cose della riga di comando.

Detto questo, suggerirei, come molti di quelli sopra, di provare blocchi di codice. Ha un'evidenziazione del codice decente, un modo abbastanza semplice per creare un progetto, codificarlo, eseguirlo, ecc., Che è il nucleo di un IDE reale e sembra abbastanza stabile. Il debug fa schifo ... Non ho mai visto un debugger interattivo decente in nessuna variante linux / unix. gdb non è così. Se sei abituato al debug in stile Visual Studio, sei quasi sfortunato.

Ad ogni modo, andrò a fare le valigie, so che la folla di Linux a vista unica lo griderà e mi farà correre fuori città in pochissimo tempo.


Tu hai un punto. Non è un IDE come lo conosciamo. Tuttavia è interessante che l'OP abbia votato per quella risposta! Inchiodare i miei colori sull'albero: sono un fan dei makefile da riga di comando.
ScrollerBlaster

Finalmente qualcuno che ha un po 'di cervello ... Immagino che gli altri programmino cose banali se possono fare tutto con emacs / vim.
Pippo,


7

Mi piace abbastanza l' IDE di Ultimate ++ . Ha alcune funzionalità che sono state progettate per l'uso con la propria libreria (che, a proposito, è un bel toolkit se non si desidera acquistare su GTK + o QT) ma funziona perfettamente con i progetti C ++ generali. Fornisce un discreto completamento del codice, una buona colorazione della sintassi, il debug integrato e tutte le altre funzionalità che supportano gli IDE più moderni.


Wow! Per quanto riguarda gli screenshot che sembrano davvero fantastici! Ci proverò sicuramente. Sai se devo pagare per questo? (Non è del tutto chiaro sul sito web Ultimate ++)

No, è gratis come in "discorso", "birra" e "corsa". Sono anche abbastanza aperti sull'accettazione delle patch e vengono rilasciati molto spesso, quindi è open source come lo è :)
dguaraglia,


6

Forse il Linux Tools Project per Eclipse potrebbe soddisfare le tue esigenze?

Il progetto Linux Tools mira a fornire un IDE C e C ++ completo agli sviluppatori Linux. Sviluppiamo le funzionalità di modifica e debug del sorgente del CDT e integriamo strumenti di sviluppo nativi popolari come GNU Autotools, Valgrind, OProfile, RPM, SystemTap, GCov, GProf, LTTng, ecc. I progetti attuali includono visualizzatori e analizzatori di tracce LTTng, un Editor RPM .spec, integrazione build Autotools, uno strumento di analisi dell'utilizzo dell'heap Valgrind e strumenti di profilatura delle chiamate OProfile.


6

Su Linux ci sono molti IDE:

Nella mia esperienza, i più preziosi sono Eclipse e Qt Creator . Entrambi forniscono tutte le funzionalità "standard" (ovvero completamento automatico, evidenziazione della sintassi, debugger, integrazione git). Vale la pena notare che Eclipse fornisce anche funzionalità di refactoring, mentre Qt Creator fornisce integrazione con Valgrind e supporto per la distribuzione su target remoti.

Anche l' IDE commerciale di CLion sembra molto buono (ma non l'ho usato ampiamente).


5

Ho sentito che Anjuta è piuttosto elegante per gli utenti di Gnome. Ho giocato un po 'con KDevelop ed è bello, ma in qualche modo manca di funzionalità. Anche Code :: Blocks è molto promettente e mi piace di più.


5

Sun Studio versione 12 è un download gratuito (supporto GRATUITO ea pagamento disponibile) - http://developers.sun.com/sunstudio/downloads/thankyou.jsp?submit=%A0FREE+Download%A0%BB%A0 .

Sono sicuro che hai il supporto per il completamento del codice e il debug, incluso il supporto dei plug-in in questo IDE.

Sun Studio è disponibile per Linux e Solaris. forum: http://developers.sun.com/sunstudio/community/forums/index.jsp . Forum di Sun Studio Linux: http://forum.sun.com/forum.jspa?forumID=855

Non vedo l'ora di ricevere il tuo feedback su questo strumento.

BR,
~ A


5

In precedenza ho usato Ultimate ++ IDE ed è piuttosto buono.


5

E poi ho notato che questo non è semplicemente il modo in cui lavori lì *, e ho buttato tutto fuori, ho trascorso alcuni giorni a leggere manuali, impostare la mia shell (bash), impostare un ambiente GVIM, imparare la toolchain GCC / binutils, make e gdb e vissero felici e contenti.

Sono per lo più d'accordo, ma il problema è anche quello della percezione: dimentichiamo quanto sia stato difficile diventare produttivi in ​​qualsiasi IDE scelto (o altro ambiente). Trovo che gli IDE (Visual Studio, NetBeans, Eclipse) siano incredibilmente ingombranti in molti modi.

Come un vecchio UNIX, uso sempre Emacs. Ma questo ha una curva di apprendimento piuttosto ripida e lunga, quindi non sono sicuro di poterlo consigliare ai nuovi arrivati.

Lo direi; uso Emacs come editor principale sia su Linux che su MSW (XP2, W2K). Non sarei d'accordo sul fatto che abbia una curva di apprendimento ripida , ma direi che a causa dell'enorme numero di funzioni ha una lunga curva di apprendimento. Puoi essere produttivo in breve tempo, ma se vuoi puoi apprenderne nuove funzionalità per gli anni a venire.

Tuttavia, non aspettarti che tutte le funzionalità di Emacs siano disponibili nei menu a discesa, ci sono troppe funzionalità per trovarle lì.

Come ho già detto, ho usato GNU Emacs su RSU per anni. E ha sempre funzionato bene con Visual Studio fino a quando non ho "aggiornato" al 2008; ora a volte ritarda molti secondi prima di aggiornare i file dal disco. Il motivo principale per la modifica nella finestra VS è la funzione di completamento del codice "Intellisense".



5

Sebbene io usi Vim, alcuni dei miei colleghi usano SlickEdit che sembra piuttosto buono. Non sono sicuro del debug integrato perché non saremmo in grado di farlo comunque sul nostro progetto specifico.

SlickEdit offre un buon supporto per la navigazione di basi di codice di grandi dimensioni, con riferimenti incrociati e tag jump. Ovviamente ha anche le cose di base come l'evidenziazione della sintassi e il completamento del codice.


5

Uso Eclipse CDT e Qt Creator (per applicazioni Qt).

Queste sono le mie preferenze. È una domanda molto suggestiva e ci sono tante risposte quanti sono gli sviluppatori. :)


4

SlickEdit. Ho usato e amato SlickEdit dal 2005, sia su Windows che su Linux. Ho anche esperienza di lavoro in Visual Studio (5, 6, 2003, 2005) e solo con Emacs e la riga di comando. Uso SlickEdit con makefile esterni, alcuni dei miei compagni di squadra usano SlickEdit, altri usano Emacs / vi. Non uso il debugger integrato, il controllo integrato della versione, il sistema di build integrato: in genere trovo troppa integrazione per essere una vera seccatura. SlickEdit è robusto (pochissimi bug), veloce e intuitivo. È come un'auto tedesca, un'auto da autista.

Le versioni più recenti di SlickEdit sembrano offrire molte funzionalità che non mi interessano, sono un po 'preoccupato che il prodotto diventerà gonfio e diluito in futuro. Per ora (uso V13.0) è fantastico.



3

Se utilizzi vim da molto tempo, dovresti effettivamente farlo come IDE. Ci sono molti componenti aggiuntivi disponibili. Ne ho trovati molti utili, e li ho compilati qui, dai un'occhiata.

E molto altro nella serie di suggerimenti e trucchi vi / vim laggiù.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.