Я могу заставить valgrind проигнорировать glibc библиотеки?

Действительно ли возможно сказать valgrind игнорировать некоторый набор библиотек? Конкретно библиотеки glibc..

Фактическая проблема: у Меня есть некоторый код, который хорошо работает в нормальном выполнении. Никакие утечки и т.д.

Когда я пытаюсь выполнить его через valgrind, я получаю перезапуски/остановки программы и дампы ядра.

Ядро обычно указывает на функции glibc (обычно fseek, взаимное исключение и т.д.). Я понимаю, что могла бы быть некоторая проблема с несовместимым glibc / valgrind версия.

Я попробовал различные выпуски valgrind и glibc версии, но никакую удачу. Какие-либо предложения?

11
задан Andy Lester 24 May 2010 в 20:36
поделиться

3 ответа

Да, изучите систему подавления Валгринда .

3
ответ дан 3 December 2019 в 06:45
поделиться

Вы, вероятно, захотите спросить об этом в списке рассылки пользователя Valgrind (что очень полезно). Вы можете подавить вывод определенных вызовов, однако подавление шума - это все, что вы делаете. Звонки по-прежнему проходят через Valgrind.

Чтобы выполнить то, что вам нужно, вы (в идеале) соответствующим образом сопоставите Valgrind с glibc или , используйте макросы из valgrind / valgrind.h , чтобы обойти их. Используя их, да, вы можете сказать valgrind не трогать определенные вещи. Я не уверен, какие вызовы все запускают, однако вы также можете (выборочно) не запускать фрагменты кода в своей собственной программе, если она выполняется под valgrind. См. Макрос RUNNING_ON_VALGRIND в valgrind / valgrind.h .

Еще одна вещь, которая приходит на ум, - это убедиться, что Valgrind был правильно скомпилирован для работы с потоками . Имейте в виду, что атомарные операции в Valgrind могут привести к сбою вашей программы во время скачкообразных операций, чего в противном случае не могло бы быть, если бы она не была правильно настроена.

Если вы меняли местами версии valgrind и glibc, есть вероятность, что вы нашли совпадение, но неправильно настроили valgrind во время сборки.

1
ответ дан 3 December 2019 в 06:45
поделиться

Как было отмечено в unwind, valgrind имеет продуманный механизм для управления инструментами и способами управления ими. Но и valgrind, и glibc - сложные звери, и вы действительно, очень, очень не хотите этого делать. Самый простой способ получить взаимно совместимые glibc и valgrind - это получить оба из дистрибутива Linux по вашему выбору . Вещи должны «просто работать», а если нет, вам есть к кому пожаловаться.

4
ответ дан 3 December 2019 в 06:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: