Ich bin kürzlich auf this project. Der Code ist weitgehend in C geschrieben und die API besteht aus nur wenigen C-Funktionen. Leider scheint das Projekt einige Bugs zu enthalten, insbesondere bekomme ich immer wieder "doppelte freie oder korrupte" Fehler. Ich versuche Valgrind und Gdb zu verwenden, um herauszufinden, was falsch ist. Das Problem scheint im Speicherzuordner zu liegen. Leider tritt der erste Valgrind-Fehler in einem etwa 400 Zeilen langen Präprozessor-Makro auf, das in einem Header definiert ist. Leider kann gdb den generierten Code nicht unterbrechen. Die Stapelverfolgung ist auch nicht sehr nützlich. Gibt es eine Technik, die verwendet werden kann, um mit solchen Fehlern umzugehen?Wie debugge ich ein Präprozessor-Makro
6
A
Antwort
1
Der Online-Compiler Wandbox.org hat einen "CPP" -Modus, der sehr nützlich ist, um mit dem C-Präprozessor zu experimentieren.
ein Beispiel Siehe hier: https://wandbox.org/permlink/tFUsKMIXaQj8hhte
Sie können die gleiche Sache offline tun, mit gcc -P
oder cl.exe /E
Verwandte Themen
- 1. Wie debugge ich Heroku?
- 2. Wie debugge ich JavaFX
- 3. Wie debugge ich Makros?
- 4. xctest - Präprozessormakro
- 5. Wie debugge ich Zimt Applet?
- 6. Wie debugge ich freigegebene Webworkers?
- 7. Wie debugge ich eine XamlParseException?
- 8. typedef in Präprozessormakro
- 9. Wie debugge ich ein Maven-Projekt in Eclipse?
- 10. Wie debugge ich ein seltsames Threaded Open Fifo Problem?
- 11. Wie debugge ich ein Skript, das Stdin mit Ipython verwendet?
- 12. Wie debugge ich ein Segment von TableViewCell in Xcode?
- 13. Wie debugge ich ein Scala SBT Projekt in IntelliJ 13?
- 14. Wie debugge ich ein Formular, das keine E-Mail sendet?
- 15. Wie debugge ich ein PHP-Skript, das nie geladen wird?
- 16. Präprozessormakro ersatzlos C++
- 17. Wie debugge ich einen GLSL-Shader?
- 18. Wie debugge ich MySQL/Doctrine2 Abfragen?
- 19. Wie debugge ich einen Unity Container "Resolve"?
- 20. Wie debugge ich, warum eine Edelsteininstallation fehlschlägt?
- 21. Wie debugge ich den Abgleich des Datums?
- 22. Wie debugge ich Webservices in Silverlight
- 23. Wie debugge ich Mobicents Media Server
- 24. Wie debugge ich diesen C# Absturz?
- 25. Wie debugge ich diesen Fehler: CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER?
- 26. Wie durchlaufe/debugge ich eine Python-Webanwendung?
- 27. Wie debugge ich coffeeskript in VSCode?
- 28. Wie debugge ich eine PHP-Anwendung?
- 29. Wie debugge ich 503 Fehler in Openshift?
- 30. Wie debugge ich letzte Zeile des Kontextes?
Wenn es nach mir ginge? Konvertieren Sie das Makro in eine Inline-Funktion. Wenn das Projekt sie wirklich ausgiebig benutzt (und das hat mich nicht davor abgeschreckt, den Code zu verwenden), könnte ich versuchen, eine Vorverarbeitung zu einer Datei durchzuführen und dann diese Datei zu kompilieren und zu debuggen. –
400 + Linien Makro Oo! Versuchen Sie, die c-Quelle nach dem Präprozessor-Durchlauf (gcc -E-Option) zu generieren und Haltepunkte in dieser Datei zu setzen. – Picodev
Nun, sie definieren eine generische Prioritätswarteschlange "the C way" :( – hfhc2