Forum: Compiler & IDEs Suche Codeanalyse-Tool für dyn. Speicher


von p41145 (Gast)


Lesenswert?

Ich hatte mal vor ein paar Jahren ein Codeanalyse Tool, mitdem ich die 
dynamische und statische Speicherbelegung eines AVR checken konnte. Es 
warnte auch vor Rekursionen die potentiell die potentiell ein Overflow 
erzeugen können.

Leider habe ich den Namen vergessen. Kann mir jemand ein solches Tool 
empfehlen, welches nach Möglichkeit frei für den privaten Gebrauch ist?

Welche Tools verwendet ihr so für die Codeanalyse?

von Walter T. (nicolas)


Lesenswert?

p41145 schrieb:
> Welche Tools verwendet ihr so für die Codeanalyse?

Clang/LLVM funktioniert super. Unter Windows ist (war?) es allerdings 
ein Krampf zu installieren (u.A. wegen Abhängigkeiten zu einer 
bestimmten Perl-Version, wenn ich mich recht erinnere). Für mich reicht 
es als alleiniger Grund, eine virtuelle Entwicklungsmaschine in Debian 
bereit zu halten.

: Bearbeitet durch User
von Peter (Gast)


Lesenswert?

Falls du Linux als Betriebssystem verwendest kann ich dir valgrind sehr 
empfehlen. Es läuft zur Laufzeit und macht sehr gute Angaben über 
Speicherfehler.

Ansonsten kannst du noch tricksen: malloc() und free() per Define auf 
eigene Funktionen umbiegen. In den Funktionen mitzählen, wie viel RAM 
gerade belegt wird und wieviel noch frei ist. Danach die originalen 
Funktionen malloc() und free() aufrufen. Außerdem dich höchste Adresse 
des reservierten Speicher merken und mit dem Stackpointer vergleichen. 
Im Fehlerfall Breakpoint und den Stacktrace anschauen.

von Kaj (Gast)


Lesenswert?

Walter T. schrieb:
> Clang/LLVM funktioniert super.

Peter schrieb:
> Falls du Linux als Betriebssystem verwendest kann ich dir valgrind sehr
> empfehlen.

Und das hilft dem TO bei einem AVR jetzt wie genau?
p41145 schrieb:
> dynamische und statische Speicherbelegung eines AVR

von Nop (Gast)


Lesenswert?

p41145 schrieb:
> Ich hatte mal vor ein paar Jahren ein Codeanalyse Tool, mitdem ich
> die dynamische und statische Speicherbelegung eines AVR checken
> konnte.

Ich verwende embedded nur statische Speicherbelegung, das löst einen 
Haufen Probleme von selber.

> warnte auch vor Rekursionen die potentiell die potentiell ein Overflow
> erzeugen können.

Rekursion vermeidet man ebenfalls. Da, wo es nicht anders geht, muß man 
eben eine manuelle Stack-Analse machen. GCC mit -fstack-usage hilft 
hierbei.

> Welche Tools verwendet ihr so für die Codeanalyse?

CppCheck ist super und ist zumindest in der Windows-Version genial 
benutzerfreundlich.

von Peter S. (Gast)


Lesenswert?

PC-Lint, aber das kostet was.

von Walter T. (nicolas)


Lesenswert?

Kaj schrieb:
> Und das hilft dem TO bei einem AVR jetzt wie genau?

Statischer Codeanalyse ist es egal, ob der Quelltext für einen AVR oder 
den PC ist.

Notfalls ein paar Stubs für die Low-Level-Funktionen nachrüsten. Ist 
sowieso ratsam, seinen Quelltext nicht nur für eine Zielplattform zu 
schreiben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.