Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
outlinetrue
stylenone

...

Wprowadzenie do Arm DDT

DDT to debugger, umożliwiający wykrywanie błędów, przerywanie działania programu, wykonywanie kodu krok po kroku, podglądanie wartości zmiennych, stosu wywołań funkcji itp., dostosowany do pracy z aplikacjami rozproszonymi i wielowątkowymi.

Niniejsze wprowadzenie zakłada znajomość: Tryb graficzny (przypomnienie)Poniższy opis ma na celu wprowadzenie do DDT: dać ogląd jego funkcjonalności i umożliwić szybkie rozpoczęcie korzystania z tego narzędzia. Aby lepiej zrozumieć różne możliwości i nabrać biegłości, trzeba samemu zacząć stosować w myśl "praktyka czyni mistrza".

Kiedy używać DDT (wskazówki)?

  • jeśli w trakcie wykonania, program przerywa swoje działanie i kończy się niespodziewanym błędem
  • jeśli program się zawiesza
  • jeśli otrzymujemy niepoprawne wyniki i chcemy dociec ich przyczynypoznać przyczynę
  • jeśli chcemy prześledzić działanie kodu

Korzystanie z debuggera ma największy sens gdy posiadamy dostęp do kodu źródłowego.

Jak uruchomić DDT?

Rozważmy przykładową aplikację, uruchamianą pod MPI:

...

W celu jej zdebugowania wystarczy (pracując w trybie graficznym):

  • załadować pakiet arm-forge

...

Otworzy się wtedy właściwe GUI programu DDT, w którym będziemy wykonywać proces debugowania.

...

Podstawowe funkcjonalności

  • breakpointy
  • watchpointy
  • stack trace - wielowątkowy (gdzie się znajduje który proces/wątek)
  • możliwość tworzenia grup procesów (pasek na górze)
  • breakpointy
  • watchpointy
  • ewaluacja wyrażeń
  • widok "LOGu" (zapis pracy debuggera)
  • input i output programu
  • podgląd wartości w danej linijce (wiele / podgląd zmiennych lokalnych (zestawienie z wszystkich procesów)
  • kontrola wykonania programu (start, stop, step, step into itp., restart, start, stop...)

Dodatkowe uwagi

  • User Guide (wersja 20.2),
  • DDT z opcją offline, umożliwia wykonanie kodu pod kontrolą debuggera, bez interakcji użytkownika; może to mieć zastosowanie gdy chcemy wykonać kod i podglądnąć wartości w konkretnym miejscu, albo gdy aplikacja kończy się błędem tylko raz na jakiś czas (wtedy spośród wielu wykonań, to które zakończy się błędem dostarczy nam informacji o błędzie); wartości zapisane w raporcie, odpowiadają temu co pojawia się w "Logbook"
Code Block
languagebash
ddt --offline=debug-report.html  --break-at=<file>:<line>   (...command...)
  • opcja attach, umożliwia podpięcie się do już uruchomionego procesu (podając jego PID); bardzo wygodnie można to zrobić z poziomu GUI programu
  • user guide, https://developer.arm.com/docs/101136/2001/ddt
  • DDT z opcją offline
  • DDT oferuje opcję attach (podpięcie do uruchomionego procesu)
  • w DDT można otwierać pliki core-dumpjak GDB (jakiś link do tutorialu???)