
Ich habe Probleme bei der Verwendung von Valgrind auf der ausführbaren Datei „arm-linux“.
Ich habe Valgrind von dieser Hauptseite hier heruntergeladen:http://valgrind.org/downloads/. Führen Sie den folgenden Befehl aus, um es zu installieren:
sudo ./configure
sudo make
sudo make install
Unter Ubuntu versuche ich es mit einer ausführbaren HelloWorld-Datei, die mit Linux GCC „HelloWorld.c“ kompiliert wurde. Valgrind läuft ohne Probleme.
Dann versuche ich es mit einer ausführbaren Datei, die mit einem Cross-Compiler für ARM-Linux kompiliert wurde (diese ausführbare Datei ist für die Ausführung auf einem eingebetteten Gerät kompiliert) und erhalte diesen Fehler:
valgrind: failed to start tool 'memcheck' for platform 'arm-linux': No such file or directory
Ich habe bei Google herumgesucht und konnte nicht viele Informationen finden. Ich habe Folgendes versucht:
export VALGRIND_LIB=/usr/local/lib/Valgrind
Es wird immer noch derselbe Fehler angezeigt. Was mache ich falsch?
Antwort1
Valgrind versucht, eine geeignete ausführbare Datei für das Tool „memcheck“ zu starten, kann aber keine finden. Dies liegt daran, dassDas Skript „./configure“ hat ein Makefile erstellt, das für die Installation eines Valgrind-Pakets geeignet ist, das speziell für die Host-Architektur (Ihren PC) gedacht ist. Sie geben ihm jedoch eine ausführbare Datei, die für eine andere Architektur (in Ihrem Fall ARM) gedacht ist.; dies führt zu einer Situation, in der Ihnen die ARM-spezifischen Tools fehlen, um die Aufgabe zu erledigen. Ich hatte ein ähnliches Problem mit dem Tool „callgrind“ (ebenfalls Teil des Valgrind-Pakets) und durch Ausführen eines Strace kam ich auf die folgende Zeile:
execve("/usr/local/lib/valgrind/callgrind-arm-linux", ["valgrind", "--tool=callgrind", "Application.STM.out"], [/* 19 vars */]) = -1 ENOENT (No such file or directory)
was bedeutet, dass mir die ARM-spezifische Callgrind-Binärdatei fehlt.
um das näher auszuführen: was Sie (und ich vor nicht allzu langer Zeit) versuchen, wird von Valgrind nicht unterstützt, deshalb müssen Sie für das, was Sie wollen, einen Emulator verwenden.