4
votes

I have such setup. I need to program on some embedded device which in spec says to run Linux (although when you turn on the device, clearly the display doesn't show anything linux related - small display). The embedded device has its own SDK. Now, I thought using valgrind to check for memory management/allocation. Can I use valgrind to check a program written for my device? The problem I see is that the program might contain some device specific SDK calls, hence the program might not run on ordinary fedora linux that I run on my desktop for example. What are my options?

2
Depending on what do you want to analyze, consider using Clang Address Sanitizer, it’s much faster (valgrind will be extremely slow ). Or get the software to run on the desktop.Frank Osterfeld

2 Answers

3
votes

Running valgrind on embedded devices can be quite challenging, if not impossible.

What you can do is to create unit tests, and execute them using valgrind on the host platform. That is a way to at least check memory problems of part of the code.

Other option is to use platform emulation, and run programs in emulators (again on the host system). QEMU is quite famous open source emulator.

3
votes

Perhaps.

  1. Make sure you really run Linux, of course.

  2. Figure out the hardware platform; Valgrind supports quite a few platforms but not all.

  3. Consider whether your platform has resources (memory and CPU speed) to spare; running Valgrind is quite costly.

If all of those check out ok, then you should be able to run Valgrind, assuming of course you can get it onto the target machine. You might need to build and install it yourself, of course.

I assume you have some form of terminal/console access, i.e. over serial port, telnet, or something that you can use to run programs on the target.

UPDATE: Based on feedback in comments, I'm starting to doubt the possibility for you to run Valgrind on your particular device.