Recentemente mi sono imbattuto in this project. Il codice è scritto in gran parte in C e l'API è costituito da poche funzioni C. Sfortunatamente il progetto sembra contenere alcuni bug, in particolare continuo a ricevere errori "double free or corruption". Sto cercando di usare valgrind e gdb per scoprire cosa c'è che non va. Il problema sembra essere nell'allocatore di memoria. Sfortunatamente il primo errore di valgrind si verifica in una macro di preprocessore lungo circa 400 righe definita in un'intestazione. Sfortunatamente gdb non può infrangere il codice generato. Anche la traccia dello stack non è molto utile. C'è qualche tecnica che può essere utilizzata per affrontare questo tipo di errori?Come eseguire il debug di una macro del preprocessore
6
A
risposta
1
Il compilatore online Wandbox.org ha una modalità "CPP" che è molto utile per sperimentare con il preprocessore C.
vedere un esempio qui: https://wandbox.org/permlink/tFUsKMIXaQj8hhte
È possibile fare la stessa cosa in linea, con gcc -P
o cl.exe /E
Problemi correlati
- 1. Come funziona una macro del preprocessore?
- 2. Definizione di una macro preprocessore
- 3. CMake: come passare le macro del preprocessore
- 4. xcodebuild - come definire la macro del preprocessore?
- 5. Ottenere valore specifico del preprocessore macro
- 6. macro del preprocessore come parametri per altre macro
- 7. Preprocessore C Macro di definizione macro
- 8. Come ottengo l'output del preprocessore di Erlang?
- 9. Come eseguire il debug del debug?
- 10. Esistono trucchi del compilatore/preprocessore per eseguire il debug di stampa del nome di un enum?
- 11. Macro preprocessore multilinea
- 12. xctest - macro preprocessore
- 13. C Definizione del test del preprocessore di più macro
- 14. Come creare una stringa da una macro preprocessore
- 15. Definizione macro preprocessore tramite cmake
- 16. preprocessore C: stringize macro macro e identità
- 17. Come definire i macro del preprocessore in Xcode 4?
- 18. corretta C preprocessore macro no-op
- 19. Definisci esternamente macro di preprocessore in GLSL
- 20. #DEBUG Istruzioni del preprocessore nella pagina ASPX
- 21. Come eseguire il debug del servizio WCF?
- 22. Come eseguire il debug del codice asincrono?
- 23. Macro mono per preprocessore Android
- 24. Come eseguire il debug del codice ruby?
- 25. Come eseguire il debug del servizio Web?
- 26. Macro preprocessore per Apple Watch?
- 27. Come si esegue il debug delle macro?
- 28. Inserire i caratteri del commento usando la macro del preprocessore
- 29. Definizione di macro preprocessore C++ con SCons
- 30. Generare elenco di macro del preprocessore definiti dal compilatore
Se fossi stato io? Converti la macro in una funzione inline. Se il progetto li utilizza davvero in modo estensivo (e questo non mi ha spaventato dall'usare il codice), potrei provare a eseguire la pre-elaborazione in un file, e quindi compilare e debuggare quel file. –
400 + linee macro Oo! Prova a generare la sorgente c dopo il passaggio al preprocessore (opzione gcc -E) e imposta i breakpoint in questo file. – Picodev
Bene, essi definiscono una coda di priorità generica "il modo C" :( – hfhc2