無法在 ARM-Linux 的可執行檔上使用 Valgrind

無法在 ARM-Linux 的可執行檔上使用 Valgrind

我在“arm-linux”可執行檔上使用 Valgrind 時遇到問題。

我從這裡的主頁下載了 Valgrind :http://valgrind.org/downloads/。運行以下命令來安裝它:

sudo ./configure
sudo make
sudo make install

在 Ubuntu 上,我嘗試使用 Linux GCC 編譯「HelloWorld.c」執行 HelloWorld 檔案。 Valgrind 運行沒有任何問題。

然後我在使用 ARM-Linux 交叉編譯器編譯的可執行檔上嘗試它(此可執行檔已編譯為在嵌入式裝置上執行),並收到此錯誤:

valgrind: failed to start tool 'memcheck' for platform 'arm-linux': No such file or directory

我在谷歌上進行了挖掘,但找不到太多信息,我嘗試了:

export VALGRIND_LIB=/usr/local/lib/Valgrind

它仍然顯示相同的錯誤,我做錯了什麼?

答案1

Valgrind 正在嘗試為「memcheck」工具啟動一個合適的可執行文件,但找不到。這是因為'./configure' 腳本建立了一個Makefile,可用於安裝特定於主機架構(您的PC)的valgrind 軟體包,但您正在為其提供一個適用於另一個架構(在您的情況下為ARM)的執行檔;這會導致您缺乏 ARM 特定工具來完成這項工作。我在「callgrind」工具(也是 valgrind 套件的一部分)中遇到了類似的問題,透過執行 strace,我得到了以下行:

execve("/usr/local/lib/valgrind/callgrind-arm-linux", ["valgrind", "--tool=callgrind", "Application.STM.out"], [/* 19 vars */]) = -1 ENOENT (No such file or directory)

這意味著我錯過了 ARM 特定的 callgrind 二進位。

詳細說明一下,valgrind 不支援您(和不久前的我)正在嘗試做的事情,因此您想使用模擬器來做您想做的事情。

相關內容