Derzeit arbeite ich an einem Embedded-Projekt. Ich benutze IAR Embedded Workbench IDE und Zielplattform ist 8051-basierten Mikrocontroller. Ist es möglich Valgrind Tool zu verwenden, um den Code zu überprüfen, den ich schrieb?Verwenden von Valgrind auf einem Embedded-Projekt
Antwort
Nein, und ja *.
Nein: Wie ein anderer Kommentator sagte, läuft Valgrind nicht auf 8051-Architekturen, daher können Sie Valgrind nicht wie auf einem x86-System verwenden.
Ja *: (das Sternchen (*) ist, weil es ein begrenztes ist "ja")
Aber Sie können Valgrind auf den Nicht-8051/IAR-spezifischen Teilen des Codes verwenden, wenn Sie:
- Trennen Sie den 8051-spezifischen und den IAR-spezifischen Code vom Architektur-/Compiler-Agnostikcode.
- Wahrscheinlich möchten Sie dies tun, damit der Code durch die Trennung des agnostischen Codes nicht größer wird. (Ich gehe davon aus, Code-Größe ist ein Premium, da Sie an einem 8051 arbeiten.)
- Kompilieren Sie die Architektur/Compiler Agnostic-Code mit gcc und führen Sie es mit Valgrind auf Ihrem Desktop/Laptop-Entwicklungsmaschine, die ist wahrscheinlich eine x86-Maschine.
- Natürlich können Sie jede andere Valgrind-unterstützte Architektur/Compiler verwenden, x86/gcc ist nicht Ihre einzige Wahl.
Auf diese Weise Valgrind wird einige Ihren Code überprüfen, die als nichts besser können.
Durch die Trennung der Compiler/Chip-spezifischen Teile Ihres Codes wird es auch tragbarer und wiederverwendbar.
Oh, und dies ist nicht direkt verwandt, aber Sie sollten auch ein statisches Analyseprogramm wie PC-Lint in Betracht ziehen: http://www.gimpel.com/html/index.htm
Es prüft einige Dinge, die Valgrind Kontrollen, und viele Dinge, die Valgrind nicht prüfen. Plus wird alle Ihres Codes überprüfen, nicht nur den Nicht-8051/IAR-Code.
Es gibt viele ähnliche Tools da draußen; PC-Lint ist das beliebteste, was ich gesehen habe.
Nein genau. Natürlich können Sie Ihren Code in anderen Architekturen auf häufige Fehler prüfen, aber einige architekturabhängige Probleme werden möglicherweise nicht gefunden.Für mich habe ich einen Endian-Fehler entdeckt. In Linux 32/64 Bit hat Valgrind kein Problem. Es ist jedoch ein Problem bei Sun SPARC. – jclin
Das meinte ich mit "Auf diese Weise wird Valgrind in der Lage sein, etwas von Ihrem Code zu überprüfen, was besser ist als nichts." Da Sie auf einer anderen Architektur arbeiten, werden keine 8051-bezogenen Architekturprobleme gefunden. – svec
Ich denke du solltest wissen was 8051 ist. Es ist ein Mikrocontroller, keine generische CPU. Es wird kein voll funktionsfähiges Betriebssystem haben und viele Operationen werden durch direkte IO- und Hardware-Interrupts und/oder durch Verwendung sehr kleiner RTOS ausgeführt. Also, das meiste Programm, das für 8051 geschrieben wurde, konnte nicht kompiliert und auf einem generischen Betriebssystem mit GCC ausgeführt werden, daher denke ich, dass es nicht möglich ist, 8051 Speicherprobleme unter Valgrind zu überprüfen. – jclin
Sie sollten diese Seite Valgrind Supported Platforms überprüfen. 8051-Mikrocontroller-Befehlssatz wird von Valgrind nicht unterstützt.
Darüber hinaus sollten Sie wissen Valgrind ist ein Befehlssimulator. Das bedeutet, dass Sie Valgrind auf dem System ausführen müssen und Ihren Code mit Betriebssystem und Basis-Layer von C oder anderen POSIX-Bibliotheken ausführen, um den Lese-/Schreibzugriff oder das Profiling Ihres Programms zu simulieren. So 8051 ist unmöglich, Valgrind zu laufen.
- 1. Valgrind auf FreeBSD
- 2. Wie kann ich valgrind für Speicherprofil verwenden
- 3. running valgrind
- 4. C++ - Ungültiges Löschen von Valgrind
- 5. C Ungültiger Lesevorgang von Valgrind
- 6. Valgrind Fehler wegen $ User
- 7. Valgrind Prüfung auf Speicherleck in C
- 8. Valgrind FPU Emulation
- 9. Valgrind beschwert sich auf string.append (string)
- 10. openssl/valgrind
- 11. Lieblinge Valgrind Optionen
- 12. Ergänzung zu Valgrind?
- 13. Debuggen eines von Valgrind erzeugten Kerns
- 14. NCurses Speicherzuweisung valgrind Nachricht
- 15. Valgrind auf dem Mac El Capitan
- 16. valgrind nicht funktioniert auf OS X 10.8
- 17. Ich bekomme Valgrind auf Windows 7
- 18. Valgrind Unerkannte Anweisung
- 19. Verwenden von OpenGL auf einem MKMapView?
- 20. Verwenden von IsolatedStorage auf einem IIS-Server
- 21. Verwenden von pthread.h auf einem Windows-Build
- 22. Valgrind, Profilierungs-Timer abgelaufen?
- 23. Wie valgrind effektiv
- 24. Valgrind zeigt keine Zeilennummern
- 25. Inhalt von verlorenem Speicher, der von Valgrind gemeldet wird
- 26. Valgrind vs Purify
- 27. Valgrind zeigt keine Zuweisungen
- 28. Valgrind Fehler m64 m32
- 29. Wie kann ich Valgrind mit Python C++ - Erweiterungen verwenden?
- 30. Valgrind pthread_create Leiden
Haben Sie die Mailingliste valgrind users gefragt? Hast du http://valgrind.org/ überprüft? – NWS
Sie sollten diese Seite Valgrind Supported Platforms [1] überprüfen. 8051-Mikrocontroller-Befehlssatz wird nicht unterstützt. [1]: http://valgrind.org/info/platforms.html – jclin
@jclin Geben Sie Ihren Kommentar als Antwort ein. – Ross