190 TIF

190 TIF



Dygresja

Zmiana następnej wykonywanej instrukcji nie zawsze prowadzi do sensownych wyników w rejestrach i stosie wywołań. Używając tej techniki, można na przykład wyjść z wywołania funkcji, nie wykonując żadnego oczyszczania pamięci. To prowadzi do zaśmiecenia stosu. Należy zachować dużą ostrożność.

Tworzenie i stosowanie pliku odwzorowania pamięci

jak to zrobić

Plik odwzorowania pamięci jest plikiem tekstowym, zawierającym informacje

0    konsolidowanym programie.

•    Nazwa modułu stanowiąca podstawową nazwę pliku.

•    Datownik z nagłówka pliku programu (nie z systemu plików).

•    Lista grup w programie z adresami początkowymi każdej gnipy (w postaci sekcja:adres względny), długościami, nazwami grup i klasami.

•    Lista symboli publicznych z adresami (w postaci sekcja:adres względny), nazwami symboli, adresami prostymi i plikami .OBJ definiującymi symbole.

•    Punkt wejścia (w postaci sekcja:adres względny).

•    Lista poprawek.

Plik odwzorowania jest bardzo użyteczny przy usuwaniu usterek z ostatecznej wersji programu, na przykład w sytuacji, gdy nasz program przestaje działać na komputerze klienta i jedyne co mamy, to zrzut stosu i wartości rejestrów. Czasami czynności potrzebne do odtworzenia błędu nie są znane, więc nie można tego zrobić, wczytując program do debugera. Czasami też problem nie daje się odtworzyć podczas uruchomienia w debugerze.

Postępując zgodnie ze wskazówkami z rozdziału 15. i testując zarówno wersję ostateczną, jak i próbną, również możemy znaleźć się w sytuacji braku informacji potrzebnych do usunięcia błędów.

Niezależnie od przyczyny, dla której pozostajemy bez informacji symbolicznej, warto umieć używać dziennika dr Watsoną albo zrzutu stosu. Wtedy właśnie przydaje się plik odwzorowania. Na podstawie rejestru EIP można uzyskać naprawdę dobre pojęcie o tym, gdzie się „wykoleił” program. Zobaczmy w pliku odwzorowania, na jaką instrukcję wskazuje ten rejestr.

Następnie należy sprawdzić podejrzaną funkcję, odczytać, jakie pobiera parametry

1    spróbować wygenerować wersję maszynową tej funkcji z tymi samymi (to bardzo ważne) ustawieniami kompilacyjnymi, co w wersji debugowanej. Porównując kod ze zrzutu stosu i kodu maszynowego z informacjami z pliku odwzorowania, można uzyskać naprawdę wiele informacji.

Następnie, mówiąc językiem Herculesa Poirota, rozpocznijmy śledzenie problemu. Możemy w pliku odwzorowania sprawdzić również to, co zostało pobrane z biblioteki CRT i jak dużo miejsca zajmują zmienne.


Wyszukiwarka

Podobne podstrony:
wymagania2 bmp białka — proces nieodwracalny). Dodanie elektrolitu do koloidu liofilowego nie zawsz
Wysalanie koloidu liofilowego nie zawsze prowadzi do koagulacji, często w wyniku wysalania powstają
Scan080220081443 19 Zaburzenia miesiączkowania: -    często, jednak nie zawsze prowa
p1 Pytanie ni 7/10 << Poprzednie Następne >>
44 Joanna Stryjek dostosowane do polityki rolnej EWG (a następnie UE). Niemniej nie doprowadziło to
Slajd3 BODZIEC Zmiana środowiska zewnętrznego lub wewnętrznego, która prowadzi do pobudzenia sw
nie zawsze mieliśmy do czynienia z wyraźnie wyodrębnionym podziałem kultury na jej „dziedziny”, a ty
-ograniczenie nigdy nie może prowadzić do całkowitego zniesienia wspólności majątkowej Rozdzielność
także, iż interpretacja norm konstytucyjnych nie może prowadzić do ograniczenia lub zagrożenia zasad
stosunku do gminnego - nie może prowadzić do rozwiązań sprzecznych z prawem; *    bra
CCF20090213081 działania nie zawsze nas do niej prowadzą. W grę muszą wchodzić jeszcze inne czynnik

więcej podobnych podstron