4. Program śledzący

Dokument: pdf (475.1 KB)
  • 7 stron
Opublikowany 2017-07-23 02:06:53

29.03.2017, 00*37Systemy Operacyjne - Lekcja 5 - Segment 1 Strona 1 z 7http://oldwww.imio.pw.edu.pl/wwwvlsi/cad/teaching/soe/materialy/LEKCJA5/SEGMENT2/MAIN.HTM 2. Program śledzący W pakiecie GNU dostępny jest program śledzący gdb (nazywany też czasem uruchomieniowym). Jego wywołanie jest następujące: gdb [opcje] program [core] lub gdb [opcje] program [process_ID] Program gdb umożliwia krokowe wykonywanie programu, ustawianie pułapek, śledzenie wartości zmiennych i wyrażeń oraz inne, typowe dla programów uruchomieniowych, operacje. Oczywiście uruchamiany program (a dokładnie każdy plik zawierający tekst źrodłowy) musi być skompilowany w taki sposób, aby kod wykonywalny zawierał informacje niezbędne dla programu uruchomieniowego (w przypadku kompilatora języka C jest to opcja -g). Po wywołaniu program gdb komunikuje się z użytkownikiem za pomocą prostego interpretera poleceń podobnego w działaniu do np. powłoki bash. Jedną z dostępnych komend jest polecenie help, która pozwala uzyskać informacje o dostępnych poleceniach i ich składni w aktualnej wersji programu. Wybrany zestaw poleceń programu gdb zaprezentowany jest w tablicy 5.2. Tablica 5.2 Wybrane polecenia programu gdb Polecenie (skrót polecenia) Opis attach (at) Dołącza gdb do działającego procesu. Jedynym argumentem jest PID procesu, do którego chcemy się dołączyć. Polececenie powoduje zatrzymanie działąjącego procesu, przerywając funkcję sleep() lub dowolną inną przerywalną funkcję systemową. backtrace (bt) Wypisuje zawartość stosu. break (b) Ustawia pułapkę (ang. breakpoint), którą można określić podając jako argument nazwę funkcji, numer wiersza kodu w bieżącym pliku, parę nazwa_pliku:numer_wiersza lub dowolny adres komórki pamięci. Każdej pułapce jest nadawany unikalny numer referencyjny. clear Usuwa pułapkę. Przyjmuje takie same argumenty jak break. condition Zmienia pułapkę o podanym numerze referencyjnym w taki sposób, że przerwanie następuje tylko w przypadku spełnienia podanego warunku. continue (cont) Wznawia wykonywanie programu po zatrzymaniu na pułapce. delete Usuwa pułapkę o podanym numerze referencyjnym. detach Odłącza gdb od aktualnie przyłączonego procesu. display Wyświetla wartość podanego wyrażenia przy każdym 29.03.2017, 00*37Systemy Operacyjne - Lekcja 5 - Segment 1 Strona 2 z 7http://oldwww.imio.pw.edu.pl/wwwvlsi/cad/teaching/soe/materialy/LEKCJA5/SEGMENT2/MAIN.HTM zatrzymaniu działania programu. Każde wyrażenie otrzymuje unikalny numer referencyjny. help Pomoc. Wywołane bez argumentów podaje listę dostępnych tematów. Wywołane z argumetem (np. nazwą polecenia) podaje informacje szczegółowe (np. o danym poleceniu), np. help set. jump Powoduje wykonanie skoku pod podany adres. Działanie jest kontynuowane od podanego adresu. Adres może być podany jako numer wiersza lub adres komórki pamięci. list (l) Wywołane bez argumetów wypisuje 10 wierszy kodu źródłowego otaczających bieżący adres. Kolejne wywołania wyświetlają kolejne 10 wierszy. Podanie argumentu [nazwa_pliku:]numer_wiersza powoduje wypisanie kodu we wskazanym pliku wokół wskazanego numeru wiersza. Podanie zakresu wierszy zamiast pojedynczego numeru powoduje wypisanie tych wierszy. next (n) Wykonuje program do następnego wiersza kodu źródłowego bieżącej funkcji. Nie "wchodzi" do wnętrza wywoływanych funkcji. nexti Przechodzi do następnej instrukcji języka maszynowego. Nie "wchodzi" do wnętrza wywoływanych funkcji. print (p) Wypisuje wartość wyrażenia w czytelnej postaci, tzn. jeśli wskazany obiekt jest np. napisem to wypisany będzie napis, jeśli obiekt jest np. strukturą to wypisane zostaną jej pola. run (r) Uruchamia od początku aktualnie śledzony program. Argumenty polecenia są argumentami wywołania programu. Argumety wywołania śledzonego programu można również zdefiować przy pomocy polecenia set args. set Umożliwia zmianę wartości zmiennych, np. set a = 5.0, lub ustawienie argumentów wywołania programu, np. set args 1 5 3. step (s) Wykonuje program instrukcja po instrukcji dopóki nie osiągnie nowego wiersza w kodzie źródłowym. stepi Wykonuje jedną instrukcję języka maszynowego. "Wchodzi" do wnętrza wywoływanych funkcji. undisplay Kończy wyświetlanie wyrażenia wskazanego przez numer referencyjny. Wywołane bez argumentu powoduje zakończenie wyświetlania wartości wszystkich zdefiniowanych wyrażeń. whatis Wypisuje typ wyrażenia podanego jako argument. Przykład. Praktyczne wykorzystanie programu śledzącego gdb zostanie zademonstrowane na przykładzie prostego programu obliczania pierwiastków równania kwadratowego. Kod źródłowy programu jest następujący: 29.03.2017, 00*37Systemy Operacyjne - Lekcja 5 - Segment 1 Strona 3 z 7http://oldwww.imio.pw.edu.pl/wwwvlsi/cad/teaching/soe/materialy/LEKCJA5/SEGMENT2/MAIN.HTM #include #include /* prototypy*/ double Delta(double, double, double); double Pierw(double, double, double, int); double* PierwZesp(double, double, double, int); void main(int argc, char* argv[]) { double a, b, c, delta; double x1, x2; if (argc != 4) ...

Tagi:

Komentarze do: 4. Program śledzący • 0