memory peeker

0

Zna ktoś może jakiś program do podglądania pamięci? Chciałbym widzieć hexdump wybranego przeze mnie obszaru i najlepiej żeby program był w stanie pokazać TYLKO pamięć wybranego procesu. Taki debugger jakby.

Jest mi to potrzebne bo używam pewnej biblioteki i mam wskaźnik i na końcu muszę go przekazać do funkcji ( Destroyblabla...() ) i nie wiem czy on dealokuje ten wskaźnik czy robi tylko coś z elementami w strukturze na którą wskazuje czy jaki diabeł... więc chcę wiedzieć czy wskaźnik zostaje dealokowany.

i tak offtopic: jak mam "new a" i to jest struktura z "new b; new c" to po wywołaniu "delete a" b i c też są niszczone czy się 'zapodziewają'?

0
  1. Zainteresuj się zdobyciem SoftIce, z tego co wiem umożliwia (obok całego obszernego debugowania) też dump pamięci.
  2. Nie, obiekty ze środka zostają i robi się wyciek pamięci. Musisz zrobić w destruktorze delete na wszystko co stworzysz.
0
  1. Zainteresuj się zdobyciem SoftIce, z tego co wiem umożliwia (obok całego obszernego debugowania) też dump pamięci.

Kilka spraw:

  • SI nie jest darmowy;
  • SI nie jest już rozwijany; ostatnia wersja jest składnikiem DriverStudio 3.2
  • Si sam w sobie nie pozwala zbytnio na zrzucanie pamięci - dlatego powstały 'amatorskie' /w sumie crackerskie/ dodatki - IceDump /na win9x - straszny zabytek/ i IceExt /na NT/;
  • SI to nie narzędzie dla wszystkich... chociaż :>
    Zwykły hexdump pamięci za wiele nie da, faktycznie debugger by się przydał... z bardziej bezpiecznych zabawek /bo SI łatwo doprowadzić do restartu systemu/ to możesz OllyDbg użyć. Nie lubię olka, ale to w sumie najsensowniejszy debugger ring3...
    Ad2. jeżeli tworzysz dynamicznie podelementy dla dynamicznego obiektu to musisz je zwolnić sam - albo w destruktorze obiektu nadrzędnego - ponieważ w praktyce są to nadal obiekty niezależne powiązane tylko wskaźnikiem.
    Ech, umiejętność programowania niskopoziomowego przydaje się w HLL, pozwala uniknąć wielu 'dylematów'...

p.s. nie ten dział

0

ok, coś chyba znalazłem
http://en.wikipedia.org/wiki/Memory_debugger
mają tu parę programów do znajdowania osieroconych wskaźników, sprawdzę je

dzięki za pomoc

0

Na kazde new musi byc tyle samo delete, to to samo co malloc.

Co do samego zrzutu pamieci to nawet jakbys mial cos takieg jak chcesz zobaczyc czy pamiec zostala "zwolniona"?

0

Jeżeli chcesz sprawdzić, czy nie ma wycieków to możesz to zrobić garbage collectorem dla C. http://www.hpl.hp.com/personal/Hans_Boehm/gc/leak.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1