Как определить, работает ли под Valgrind в файле make или сценарии оболочки?

Мне нужно определить, работает ли мой Makefile под valgrind (косвенно, используя valgrind --trace-children = yes), я знаю, как это сделать из C, но я не нашел способа сделать это из скрипта,

Предыдущие ответы работают только на Linux. Для Mac OS X я собираюсь найти VALGRIND_STARTUP_PWD в среде, если у кого-то нет лучшей идеи.

11.12.2008 21:18:07
1 ОТВЕТ
РЕШЕНИЕ

из скорлупы:

grep -q '/valgrind' /proc/$$/maps && echo "valgrindage"

Это определяет, присутствуют ли предустановленные библиотеки valgrind в адресной карте процесса. Это достаточно эффективно, но если у вас есть библиотека, не относящаяся к valgrind, которая использует общий заголовок '/ valgrind', то вы получите ложное срабатывание (маловероятно).

[Я изменил шаблон grep с vg_preload на / valgrind, так как тестирование в Debian / Ubuntu показало, что имя библиотеки было другим, в то время как совпадение с каталогом valgrind, скорее всего, будет успешным.]

3
12.12.2008 09:10:11
Ухоженная. Вы знаете, изменилось ли имя? На моей машине есть записи vgpreload, но нет vg_preload.
Per Mildner 11.12.2008 22:03:02
Это было из valgrind версии 3.3.1, есть большая вероятность, что имя библиотеки изменилось между версиями. возможно, вам удастся избежать использования '/ valgrind /' для grep, при условии, что valgrind установлен в нечто вроде / usr / local / lib / valgrind / ...
Petesh 12.12.2008 00:50:55
Я только что запустил valgrind из своей коробки с Ubuntu, и он сказал «vgpreload» без подчеркивания. Это может быть убунту, которая вызвала переименование. Мой оригинальный ответ был основан на сборке внутри среды Linux From Scratch
Petesh 12.12.2008 00:58:40
Да, у меня есть коробка Ubuntu тоже. Спасибо.
Per Mildner 12.12.2008 07:51:52