A najlepiej wszystkie z nich zamiast tylko mojego kodu? Mój program używa Gtk, Loudmouth i kilku innych rzeczy, a te dwa (i niektóre z nich, libgcrypto, libssl) powodują tyle błędów, że nie jestem w stanie wykryć mojego. Czy jest możliwe, aby valgrind ignorował rzeczy pochodzące z głębszych niż mój własny kod?Czy jest możliwe, aby valgrind ignorował pewne biblioteki?
Odpowiedz
Można generować tłumienia błędów dla bibliotek, ale nie sądzę, że można ogólnie wyłączyć biblioteki.
Trudno również automatycznie stwierdzić, czy błąd pamięci w bibliotece jest spowodowany przez problem z kodem, czy też nie.
http: // valgrind.org/docs/manual/manual-core.html # manual-core.suppress To jest łącze do informacji o pomijaniu błędów dla valgrind. – blwy10
Szczególnie w przypadku OpenSSL jest to bardzo trudne. Klucze szyfrowania SSL są częściowo oparte na niezainicjalizowanym koszcie stosu, co oznacza, że wszystkie odszyfrowane dane są również skażone. Zanieczyszczenia te rozprzestrzeniają się poza samą OpenSSL.
Kompilowanie OpenSSL z opcją "PURIFY" może pomóc tutaj. Niestety, z powodu słabo przemyślanych działań głównych dystrybucji Linuksa jest mało prawdopodobne, aby stał się domyślny.
Bardzo tępym rozwiązaniem jest opcja memcheck's --undef-value-errors=no
.
Nice. Ignorowanie wartości niepoprawnych faktycznie spowodowało, że mój szczególny przypadek, w którym miałem "Ponad 10000000 wykrytych błędów całkowitych" pochodzących z biblioteki (nie OpenSSL), przeanalizowałem resztę kodu. –
Zakładając używasz memcheck narzędzie i chcesz ignorować Leak błędy w libcrypto tylko, można umieścić tłumienie jak:
{
ignore_libcrypto_conditional_jump_errors
Memcheck:Leak
...
obj:*/libcrypto.so.*
}
... do pliku i przekazać to do valgrind
z --suppressions=*FILENAME*
.
Aby zignorować Leak błędy w wszystkie biblioteki współdzielone pod każdym lib katalogu (/lib, /lib64, /usr/lib, /usr/lib64 ...):
{
ignore_unversioned_libs
Memcheck:Leak
...
obj:*/lib*/lib*.so
}
{
ignore_versioned_libs
Memcheck:Leak
...
obj:*/lib*/lib*.so.*
}
jest mało prawdopodobne, ale może trzeba dodać dodatkowe odmiany wzoru katalogu do odpowiedzialności za rozmieszczenie i X11 Biblioteki GTK.
Pamiętaj, że to zignoruje błędy spowodowane przez wszelkie wywołania zwrotne, które zostały napisane przez biblioteki. Catching błędy w tych wywołań zwrotnych mogłoby prawie być wykonane z:
{
ignore_unversioned_libs
Memcheck:Leak
obj:*/lib*/lib*.so
...
obj:*/lib*/lib*.so
}
{
ignore_versioned_libs
Memcheck:Leak
obj:*/lib*/lib*.so.*
...
obj:*/lib*/lib*.so.*
}
... ale ten ujawnia błędy w połączeniach przez biblioteki, które korzystają z malloc Valgrind. Ponieważ valgrind malloc jest wstrzykiwany bezpośrednio do tekstu programu - nie załadowany jako biblioteka dynamiczna - pojawia się w stosie w taki sam sposób, jak robi to twój własny kod. Pozwala to Valgrind śledzić alokacje, ale także utrudnia wykonanie dokładnie tego, o co prosiłeś.
FYI: Używam valgrind 3.5.
Jedyne czego brakuje w tej odpowiedzi, to co zrobić z tekstami tłumienia ... – lvella
Ustawienia te mają być zapisane w pliku tłumienia, który jest czytany po uruchomieniu Valgrind. Opcja --suppressions =
@mormegil przypadkowo przegłosował odpowiedź. Przepraszam – Greg
- 1. Czy chcesz, aby sed ignorował niepasujące linie?
- 2. Czy mogę nakazać Make, aby ignorował zmienne środowiskowe?
- 3. Czy jest interfejs emacs valgrind?
- 4. Jak zmusić StyleCop, aby ReSharper ignorował pliki?
- 5. Czy jest możliwe użycie biblioteki C z python AppEngine?
- 6. Jak powiedzieć valgrind, aby zapamiętywać rozwidlone procesy?
- 7. Czy mogę ustawić Visual Studio 2005 tak, aby ignorował asercje w określonym regionie kodu podczas debugowania
- 8. Czy jest możliwe dołączenie biblioteki z innej biblioteki za pomocą Arduino IDE?
- 9. Czy jest możliwe, aby zmienić artefakty ścieżkę TeamCity za
- 10. Czy jest możliwe, aby Gerrit losowo wybrał recenzenta?
- 11. Czy jest możliwe, aby wartość adnotacji Java była obowiązkowa?
- 12. Czy jest możliwe aby użyć czcionek internetowych w google gmail
- 13. Czy jest możliwe, aby uruchomiony program Pythona nadpisał się?
- 14. Czy jest możliwe aby użyć NG-wzór ze zmiennym
- 15. SSRS: Czy jest możliwe, aby akcja ładowała podraport?
- 16. C# - Czy jest możliwe, aby zmienić GC Heap?
- 17. Czy jest możliwe, aby parametr implementował dwa interfejsy?
- 18. XPath: czy jest to możliwe, aby połączyć zapytaniami
- 19. Czy jest możliwe za pomocą Resharpera, aby usunąć inicjalizator obiektu?
- 20. Czy jest możliwe aby wysłać zawartość vim za pomocą HTML
- 21. Czy jest możliwe, aby uzyskać wszystkie wspólne apache na raz?
- 22. Czy jest możliwe, aby projekt C# używał wielu wersji .NET?
- 23. Czy jest możliwe, aby połączyć ciąg i DBNull w C#?
- 24. Czy jest plan, aby włączyć Android PdfRenderer do biblioteki wsparcia?
- 25. Jak mogę sprawdzić, czy program jest uruchomiony z Valgrind?
- 26. Jak mogę ustawić OptionParser Optparse, aby ignorował nieprawidłowe opcje?
- 27. Jak mogę, aby edytor PyDev wybiórczo ignorował błędy?
- 28. Czy istnieje sposób, aby powiedzieć NLTK, że pewne słowo nie jest właściwym rzeczownikiem, ale rzeczownikiem?
- 29. Czy przetwarzanie/analiza obrazu NodeJS jest możliwe?
- 30. Czy możliwe jest zastrzyki przez dynamiczny LINQ?
+1, Mam takie same problemy. Biblioteka GL firmy NVIDIA wykonuje skoki warunkowe na podstawie niezainicjowanej pamięci, a 'std :: string' nadal generuje fałszywe alarmy (" prawdopodobnie utracone "). – Thomas