Valgrind is a GPL'd framework for building simulation based debugging and profiling tools. The best known of these is Memcheck, a memory error detector, but in fact it is only one of eight tools in the standard distribution: two memory checkers, two thread checkers, two performance profilers and two space profilers.
The Valgrind trunk sources now contain a port to 64 bit ARMv8. The port has reached a stage of being useful for real debugging, and, in turn, could do with wider testing.
Memcheck works and has a noise (false-error) level that is comparable with other targets. All the basic functionality -- detection of uninitialised value uses, detection of invalid memory accesses, detection of leaks, and origin tracking -- is available. Other tools -- Lackey, Cachegrind, Callgrind, Massif, DRD and Helgrind -- work to some extent, but have not been extensively tested.
Current limitations are:
- Incomplete support of vector (SIMD) instructions. Anything created by gcc-4.8.2 -O3, including SIMD code from autovectorization, works. Completion of SIMD support is ongoing.
- Incomplete syscall support. Enough system calls are supported for large programs to work, but some are still unsupported.
- Integration with the built in GDB server is incomplete.
There has been extensive testing of the supported integer, FP and SIMD instructions. At least one large application -- Firefox 26 -- is able to start up and quit. The port is under active development and will ship as part of the next release, Valgrind 3.10.
In general, if you have used Valgrind on 32 bit ARMv7 or other targets, you should find this new port very little different.
You can get hold of the trunk sources via Subversion, using the URL svn://svn.valgrind.org/valgrind/trunk. See README.aarch64, at the root of the source tree, for instructions on how to build and run the port.
If you have questions or difficulties, feel free to mail our users or developers mailing lists, as described at http://www.valgrind.org/support/mailing_lists.html. Bugs may be reported at https://bugs.kde.org/enter_bug.cgi?product=valgrind&format=guided.