Sono principalmente un programmatore C e C++ e spesso ho bisogno di comprendere rapidamente la struttura di basi di codice molto grandi (gcc, kernel di Linux). Mi chiedo se ci sono strumenti per aiutare in questo senso. Sono particolarmente interessato a call graph, riferimenti alla struttura dei dati in tutto il progetto, includono grafici delle dipendenze, posizione rapida dei simboli, ecc. Ho conosciuto ctags e cscope ma sto cercando qualcosa con più visualizzazione come un grafo delle chiamate che permetta di localizzare rapidamente la definizione di una funzione, eseguire il root del grafico a una determinata chiamata, invertirla (ovvero localizzare tutte le chiamate a una determinata funzione), ecc.Strumenti di lettura, comprensione e lettura del codice sorgente
risposta
Si prega di provare e utilizzare SourceInsight. È abbastanza utile con il codice di navigazione e comprenderlo. Fornisce la maggior parte delle funzionalità richieste dall'utente.
Se si desidera creare grafici di chiamata, è possibile eseguire il rollover con GCC -finstrument-functions
.
In sostanza, quando si compila un programma con l'opzione abilitata, GCC chiama le seguenti funzioni ogni volta che il programma di destinazione entra o esce da una funzione:
void __cyg_profile_func_enter (void *this_fn,
void *call_site);
void __cyg_profile_func_exit (void *this_fn,
void *call_site);
Quello che dovete fare è definire queste funzioni, e scrivere nella tua logica per produrre il grafo delle chiamate lì.
This extremely thorough tutorial spiega come è possibile produrre un grafico di chiamata utilizzando -finstrument-functions
e GraphViz. Tutti gli strumenti coinvolti sono FOSS e gratis.
Naturalmente:
- I grafici GraphViz produce sono stand-alone, e non parte di un IDE.
- Non sono sicuro che la produzione di un call-graph di Linux (il kernel) sia possibile in questo modo.
Si potrebbe provare cflow. Ti dà un graf delle chiamate di funzioni all'interno. Tuttavia non è molto flessibile.
- 1. Sorgenti di lettura codice
- 2. Comprensione del codice, reverse engineering, migliori concetti e strumenti. Java
- 3. Codice sorgente Android non funzionante, lettura buffer frame tramite glReadPixels
- 4. Suggerimenti per la lettura del codice ASM?
- 5. Utilizzo dello strumento di copertura del codice Python per la comprensione e l'eliminazione del codice sorgente di una grande libreria
- 6. es6 importa come una vista di sola lettura comprensione
- 7. Come può essere utilizzato il Kindle come strumento di lettura del codice sorgente?
- 8. Lettura del codice sorgente Python per migliorare le capacità di programmazione
- 9. Riduci lettura lettura archivio dati
- 10. Lettura di file .DXF
- 11. Strumenti di analisi del codice statico
- 12. Lettura del userAgent con C#
- 13. Decodifica e comprensione codice assembly
- 14. Tempo di lettura e scrittura
- 15. Forza IOException durante la lettura del file
- 16. Comprensione dello schema di denominazione di base del repository del codice sorgente Android
- 17. Lettura del codice a barre dalla webcam nell'applicazione Web PHP
- 18. Esistono strumenti di unione per il controllo del codice sorgente che comprendono il codice?
- 19. Data di scadenza del cookie di lettura
- 20. Lettura codice QR con fotocamera - Android
- 21. SQLite lettura e scrittura simultanee
- 22. Lettura della proprietà C# nel codice JQuery
- 23. Lettura Nashorn JO4 e NativeArray
- 24. Metodo di lettura quadratica
- 25. sola lettura vs auto (sola lettura) Proprietà
- 26. Lettura di un file all'interno del makefile
- 27. Lettura del documento principale da iFrame e modifica del genitore
- 28. Lettura di file MP3
- 29. C# crea file di lettura/scrittura da sola lettura
- 30. Contatore del programma di lettura direttamente
RTCM - leggi il manuale del compilatore. La maggior parte dei compilatori fa parte di ciò che vuoi e mi aspetto che i compilatori che usi non facciano eccezione. –