Obecnie działa tylko dla systemu Linux. DBGMEM rozpowszechniany jest zgodnie z warunkami GNU Lesser General Public License
Narzędzie pomaga znaleźć problemy, takie jak
& Nbsp; 1. wycieki pamięci
& Nbsp; 2. uszkodzenie sterty pamięci
& Nbsp; 3. Niewłaściwe, nielegalne argument wybranych funkcji standardowych bibliotek.
& Nbsp; 4. stos z korupcją
& Nbsp; 5. Korzystanie z uwolnionym lub un przygotowanej pamięci sterty.
& Nbsp; 6. Pozwala na rozszerzenie funkcji, sprawdzić argumenty API dodatkowa
Narzędzie zastępuje funkcje alokacji pamięci GLIBC, pamięć i funkcje manipulacji ciąg, aby dodać do jego możliwości.
DBGMEM nie wymaga żadnych zmian w programie, choć może chcesz zmienić swój program, aby móc korzystać z zaawansowanych funkcji.
DBGMEM jest otwarta debugger pamięci źródło C i C ++ programy i działa pod systemem operacyjnym Linux, i jest udostępniany na licencji GNU Lesser General Public License. DBGMEM dodaje kontrole debugowania do części glibc biblioteki standardowej; jest realizowany jako bibliotek, które są ładowane do przestrzeni adresowej debugowanego procesu.
Narzędzia
DBGMEM ma kilka narzędzi do debugowania pamięci, każdy może być załadowane do debugowanemu programu; Proste narzędzie śledzi wszystkich przydzielonych bloków pamięci, i dodaje informacje księgowości, takich jak stos w momencie, gdy blok została przeznaczona, w nagłówku na arenie, która poprzedza przydzielonego bloku pamięci; dodaje także słowa osłony przed i po przydzielonego bloku; Proste narzędzie najlepiej nadaje się do wykrywania problemów wycieków pamięci; jak nagłówek areny może ulec uszkodzeniu przez program, który jest debugowanemu. Sprawdzanie trwało zachowuje wszystkie informacje księgowości ze stosu w pamięci anonimowego pliku odwzorowany; to sprawia, że narzędzie, bardziej wytrzymałe, aby wytrzymać pamięci nadpisywania błędów. Narzędzie sprawdzania dodaje również możliwość szybkiego wyszukiwania informacji o każdym bloku sterty dla wartości wskaźnika zawartego w tym bloku sterty; Narzędzie sprawdzania dodaje weryfikacji parametrów do wspólnego łańcucha i funkcji manipulacji i kontroli pamięci, w celu ewentualnego stosu smashing przez tych funkcji.
Tryb pracy
Możesz uruchomić większość programów z debuggera, jak jest; Narzędzie nie wymaga debugger być powiązane z jakimikolwiek szczególnymi bibliotek; Narzędzie to jest wspólna biblioteka, która jest załadowana do przestrzeni adresowej procesu, który jest badany za pomocą techniki DLL wstrzykiwań. Funkcja LD_PRELOAD dynamiczny linker jest używany do załadowania biblioteki narzędzi udostępnionych pierwszy, zanim jakakolwiek inna biblioteka jest ładowany; alokacji pamięci i funkcji manipulacji ciąg są przechwytywane i pierwszy o nazwie z biblioteki narzędzi; umożliwia to narzędzie do dodawania swoich kontroli. Podczas wykonywania debugowanego procesu surowy pisemnego sprawozdania, które jest przetwarzane po zakończeniu debugowanemu procesu; Raport dodaje, zwiększona symboliczne nazwy funkcji do układania śladów w raporcie surowca. Gdb debugger służy do włączania adresy numeryczne na adresy symboliczne podczas dalszego przetwarzania raportu surowego
Cechy .
- wycieków pamięci ; Dotyczy to zarówno kontroli i narzędzia prostych narzędzi. Narzędzie śledzi każdy przydzielony blok sterty stosu śladu wraz z podjętą w momencie, gdy blok przeznaczono; dodatkowo zmienna całkowita jest utrzymywana z każdego rozdziału, wartość ta śledzi okres logiczny / `generacji", która charakteryzuje się czas, kiedy blok przydzielono. Raport z tych informacji jest zawsze produkowane na wyjściu procesu, lub na żądanie użytkownika. Informacja ta pomaga znaleźć przypadki i przyczyny wycieków pamięci.
- Korzystanie z pamięci sterty nie zainicjowany lub uwolniony pamięci sterty; Dotyczy to zarówno kontroli i narzędzia prostych narzędzi. Narzędzie ustawia wszystkie nowo przydzielonego pamięci do wartości bajtów 0xDD i uwolnił wszystkich bajtów pamięci do wartości 0xEE; Zastosowanie tych wartości prowadzi zazwyczaj do programowania błędy, jeśli ten obszar pamięci zawiera wskaźnik, a następnie wyłuskania z wskaźnika z wartości 0xDDDDDDDD doprowadzi do katastrofy.
- Pamięć uszkodzenie stosu; Dotyczy to zarówno kontroli i narzędzia prostych narzędzi. Narzędzie sprawdza dla pamięci nadpisuje i wykupuje poprzez umieszczenie przedrostka i przyrostka w pamięci każdego bloku sterty; jeżeli wartość zostanie zmieniona sufiksu wykrycia następnie nadpisywanie sterty / gwarantowania.
- Dotyczy to "narzędzie kontroli '' '' 'tylko; Nadużycie funkcji manipulacji ciąg glibc i kopię pamięci / funkcji move glibc; stos korupcji w tych sprawdzonych funkcji narzędzie dostaje pierwszego przejścia na typowych funkcji standardowych bibliotek, to jest zaznaczone, że funkcja nie będzie zastąpić istniejący blok sterty argumentem; sprawdzana jest również, że stos wywołującego wątku nie zostaną uszkodzone.
Co nowego w tym wydaniu:
- zrobić teraz dostaje zmienna CFLAGS
- budować dbgmem bibliotekę z opcją -ldl
- biblioteki dzielone jest teraz umieszczony w lib / $ (uname -r) katalog, jak glibc jest żonaty z wersji jądra.
- składanka fix na niektórych systemach (krok konfiguracyjny)
- dodać opcję uruchamiania skryptów (-m - generowanie stosu śledzi tylko dla niektórych pokoleń)
Co nowego w wersji 1.9.1:
- , aby skrypt zaktualizowane, teraz próbuje wykryć wymagane Ustawienia zbudowane; nadal nie teraz, jak to zrobić automake choć
- Błąd kompilacji w trybie dla gcc 2.9.6 C stałe; gcc nadal wywala się z błędem wewnętrznym na tryb C ++ zbudowany
- dodany Opcja -g (wyłączyć kontrolę do parowania z malloc / nowa / nowy [] i wolny / delete / delete [] w C ++ tryb)
Co nowego w wersji 1.7:
- Opcja -f naśladowania fork i exec połączeń (jak w dodanej fork / exec)
- teraz wypisuje z wiersza poleceń z debugowanemu procesu w nagłówku pliku raportu.
- Mapa nazwa pliku zawiera teraz PID.
- usuwanie surowe pliki raportu domyślnie; nie ma zbyt wielu z nich;
- wszystkie zastosowania sprintf zmieniona na snprintf
Komentarze nie znaleziono