PDA

Visualizza la versione completa : [C++] Problematiche legate al debugging di codice C++ in vari ambienti/IDE


Cesaropa12
19-02-2007, 17:59
Io utilizzo devc++ e mi trovo malissimo a fare il debugging perchè non si riesce a vedere il contenuto degli array. Ho fatto un test e, anziche fare uso del debugging, ho utilizzato delle istruzioni per stampare il contenuto degli array nei punti strategici e ho riletto più volte il listato verificando i punti più critici. Il risultato? Riesco a trovare gli errori con una velocità incredibile, soprattutto perchè non mi perdo via nel controllo dei valori delle variabili passo passo. Voleve chiedere a voi come fate in particolare con devc++ che non mostra il contenuto dell'array, inoltre, se non ricordo male, neanche con visual studio si riesce(solo in c++ perchè in c# e vb.net sono sicuro di si).

oregon
19-02-2007, 18:03
Con il debugging di Visual C non ho problemi ...

UltraBeginner
20-02-2007, 09:06
Originariamente inviato da Cesaropa12
Io utilizzo devc++ e mi trovo malissimo a fare il debugging perchè non si riesce a vedere il contenuto degli array. Ho fatto un test e, anziche fare uso del debugging, ho utilizzato delle istruzioni per stampare il contenuto degli array nei punti strategici e ho riletto più volte il listato verificando i punti più critici. Il risultato? Riesco a trovare gli errori con una velocità incredibile, soprattutto perchè non mi perdo via nel controllo dei valori delle variabili passo passo. Voleve chiedere a voi come fate in particolare con devc++ che non mostra il contenuto dell'array, inoltre, se non ricordo male, neanche con visual studio si riesce(solo in c++ perchè in c# e vb.net sono sicuro di si).

Che strano a me lo mostra il contenuto dell'array e uso sempre e solo il Dev visto che non ci comprano il visual C .... :( :(

Cesaropa12
20-02-2007, 14:32
Scusate..Avete ragione, gli array si vedono, non vedo il contenuto dei contenitori std:list,queue...

Cesaropa12
21-02-2007, 17:06
Sia con devc++, sia con ddd che utilizza gdb non vedo i contenuti dei contenitori stl. Voi li vedete?

XWolverineX
21-02-2007, 17:34
Bhe l'STL inizia già ad essere una libreria un pò esterna (seppur nello standard)...è quindi normale che non ne prevedano un "parsing"...

Cesaropa12
21-02-2007, 17:42
Voglio dire allora...Cosa mi serve il debugging se non posso neanche vedere il contenuto di 3 contenitori in croce...???.,,(Se io faccio largo uso di queste).

XWolverineX
21-02-2007, 17:58
Ti dirò la mia opinione.
Io dico che nessuno fin'ora è riuscito a realizzare un IDE completo e funzionale come quelli della Microsoft per i suoi linguaggi .NET. Evidentemente alla Microsoft non interessa rendere il C++ piu' facile da usare, e non so perchè.
Facendo anche un pò i pessimisti, il debug guidato, è forse un concetto che non esiste in questo linguaggio.

Nota come l'intellisense del C# è tutta un'altra cosa rispetto a quella del C++
Molte volte sbaglia i membri.
Fino alla versione 2003 parsava tutti gli header e non solo quelli che avevi effettivamente usato
Molte volte non funziona, non mostra gli argomenti delle funzioni, i metodi delle classi...
Nel C# basta premere un tasto qualsiasi e già un intellisense completo ti scrive automaticamente un programma, ti mette tutte le parole-chiave, mentre nel C++ quando vedi colorate le lettere sembra già che ti stiano facendo un piacere...

MItaly
21-02-2007, 19:31
Originariamente inviato da XWolverineX
Nota come l'intellisense del C# è tutta un'altra cosa rispetto a quella del C++
Molte volte sbaglia i membri.
Fino alla versione 2003 parsava tutti gli header e non solo quelli che avevi effettivamente usato
Molte volte non funziona, non mostra gli argomenti delle funzioni, i metodi delle classi...
Nel C# basta premere un tasto qualsiasi e già un intellisense completo ti scrive automaticamente un programma, ti mette tutte le parole-chiave, mentre nel C++ quando vedi colorate le lettere sembra già che ti stiano facendo un piacere...
Secondo me questo dipende dal fatto che in C/C++ tutto si basa su un intrico di header da cui l'IntelliSense verrebbe fuori a fatica se stesse a fare dei controlli accurati: renditi conto: se per ogni ".", "::", "->" che digiti o inclusione che cambi IntelliSense dovesse stare a ri-precompilare tutto il codice, ad effettuarne il parsing, a trovare gli scope di tutte le funzioni e così via si butterebbe via un mucchio di tempo... perciò probabilmente hanno preferito utilizzare un approccio più "grezzo" ma più conveniente in termini di efficienza. In C# o in altri linguaggi .NET, al contrario, le classi e le funzioni disponibili sono descritte con grande semplicità tramite i metadati contenuti nei binari .NET, per cui per l'IntelliSense è molto semplice e rapido capire che elementi sono disponibili nel contesto corrente.

Loading