menggunakan cross-compiling Valgrind

12

Saya telah mengunduh sumber-sumber dari batang Valgrind dan membangunnya untuk digunakan pada sistem Linux tertanam (Montavista Linux) yang ditenagai oleh ARM926 (arsitektur ARMv5t). Semuanya berjalan dengan baik sampai saya mencoba menjalankannya untuk memeriksa beberapa aplikasi yang saya buat; Valgrind memberitahuku:

"valgrind: gagal memulai alat 'memcheck' untuk platform 'arm-linux': Tidak ada file atau direktori"

Mencoba menjalankan alat lain memberikan pesan yang sama. Untuk make install saya menggunakan opsi --prefix yang menunjuk ke sistem file embedded system yang dipasang melalui NFS (misalnya --prefix = / home / NFS_mounted / opt / valgrind). Saya memeriksa lokasi instalasi dan direktori lib di sana berisi alat yang tepat; Saya juga memeriksa file pkgconfig yang sesuai untuk Valgrind dan tampaknya baik-baik saja jadi saya agak tidak mengerti sekarang dan tidak tahu apa yang salah. 2 pertanyaan:

  1. Apakah benar menggunakan / menginstal Valgrind yang dikompilasi silang seperti itu? Mungkin saya melakukan sesuatu yang salah mengenai pengaturan, atau mungkin ada sesuatu yang melibatkan sistem host yang saya lewatkan (seperti gdb / gdbserver).
  2. Adakah yang mencoba menjalankannya pada arsitektur ARM? Saya sadar bahwa dukungannya cukup baru jadi saya bertanya-tanya apakah saya bisa mendapatkan hasil yang layak.
celavek
sumber

Jawaban:

15

Jalankan perintah ini di perangkat target Anda

export VALGRIND_LIB=~/valgrind/lib/valgrind/

di mana ./valgrindjalur direktori diinstal (diberikan dalam ./configure)

bhargav
sumber
4

Masalahnya adalah bahwa 'valgrind' sedang mencari executable yang berbeda untuk menjalankan pengecekan yang sebenarnya. Itu menggunakan jalur instal yang Anda tentukan ketika Anda mengkonfigurasinya, yang bukan jalur yang sama seperti pada target.

Anda harus dapat mengonfirmasi ini dengan membuat symlink / home / NFS_mount pada target Anda yang menunjuk ke '/'.

Kristof Provost
sumber
Bagaimana cara mencari jalan itu? Pkgconfig berisi jalur target yang benar, jadi dari mana ia mencoba mengambilnya?
celavek
Saya pikir itu dikompilasi masuk. Skrip ./configure menghasilkan file header config.h, yang harus berisi jalur awalan.
Kristof Provost
2

Masukkan VALGRIND_LIB direktori induk dari direktori amd64-linux. Misalnya:

export VALGRIND_LIB=/u/gallinar/downloaded/valgrind-3.2.3/.in_place

ini bekerja untuk saya hari ini :).

Hemant
sumber
Saya kehilangan .in_placefoldernya.
ArmenB
0

VALGRIND_LIB perlu menunjuk ke folder yang memiliki alat memcheck dan lib yang dikompilasi x lainnya

LYNS DERRIC
sumber