Jak debbugować programy w XE5?

0

Kiedyś jak odpalałem debbugera "krok po kroku" to było przejrzyście, odpalał się program po paru krokach i wtedy mogłem kliknąć w button i obserwować jak wykonuje się kod np. ShowMessage, a teraz w XE5 jak odpalam debbugera to mi spamuje skacząc po kodzie dziwnym, otwiera kilka zakładek i w nich skacze po różnych obcych mi funkcjach, a później jeszcze dowala skakanie po czymś co wygląda jak assembler. Czy macie szanowni użytkownicy jakiś tutorial lub czy opiszecie własnymi słowami jak debbugować program, który ma jeden button, a w nim tylko linijka ShowMessage('test');? chcę żeby nie otwierało mi innych zakładek o nazwie system lub jakichś tam, chcę łatwo móc obserwować TYLKO MÓJ kod, reszta mnie nie interesuje więc błagam was o pomoc.

0

W miejscu gdzie chcesz zacząć debugowanie stawiasz breakpoint (F2 prawdopodobnie) do tego są w zasadzie 2 główne sposoby na krokowe poruszanie się albo StepOver albo StepInto różnica jest taka, że step over nie wchodzi do wnętrza funkcji natomiast step into wchodzi "o poziom głębiej" w funkcję, aż dojdziesz do tego rzeczonego assemblera czy wywołania WinApi. Skróty klawiaturowe musisz sobie odszukać sam.
Nie korzystam z XE5 więc opis jest stosunkowo ogólny ale na pewno znajdziesz o wiele więcej informacji na ten temat oraz ogólnie na temat debugowania w Delphi a jest tego znacznie więcej niż śledzenie linijka po linijce co kryje się pod zmiennymi. http://docwiki.embarcadero.com/RADStudio/XE5/en/Debugging_Applications_Index

0

otwiera kilka zakładek i w nich skacze po różnych obcych mi funkcjach, a później jeszcze dowala skakanie po czymś co wygląda jak assembler

Dodam jeszcze, że całe RTL wcale nie jest napisane w czystym OP - sporo funkcji napisanych jest (nawet w całości) w asemblerze; Więc nie dziw się, że pokazuje Ci kod w tym języku; Wszędzie widziałem albo wstawki asemblerowe, ale funkcje z ciałem tylko w nim - od starożytnego TP7, przez Delphi aż po Lazarusa; Część funkcji jest po prostu mocno optymalizowana, dlatego nie pozostawia się tego kompilatorowi;

Czy macie szanowni użytkownicy jakiś tutorial lub czy opiszecie własnymi słowami jak debbugować program, który ma jeden button, a w nim tylko linijka ShowMessage('test');?

Zabierasz się za debugowanie nie mając tak na prawdę pojęcia jak się to robi poprawnie i przede wszystkim sprawnie; Dziwię się, jak do tej pory to robiłeś nie znając takich podstaw jak stawianie breakpointów, bez modułu Watches itd. itp.; Do tego dochodzi jeszcze Step Into, Step Over, Run to cursor czy nawet coś podobnego do Lazarusowego Step Out (bardzo przydatne przy zapędzeniu się z wnikaniem do instrukcji);

chcę żeby nie otwierało mi innych zakładek o nazwie system lub jakichś tam

Musisz zrozumieć, że debuger nie robi Ci na złość otwierając kolejne zakładki, tylko sam mu każesz to zrobić; Jeśli ciało danej procedury/funkcji jest w osobnym module, to po wybraniu opcji Step Into siłą rzeczy musi otworzyć moduł żeby Ci pokazać ten kod; Jeśli chcesz obserwować tylko swój kod nie wnikając do RTLowskich funkcji to po napotkaniu takiej instrukcji po prostu nie wchodź do niej; Albo poustawiaj sobie breakpointy, dzięki którym pominiesz kod, którego obserwować nie chcesz; Pobaw się debugerem a zobaczysz, jak potrafi być przydatny i jak szybko można dzięki niemu znaleźć bugi;

Do poczytania pozostawiam Ci artykuł pod tytułem Debugowanie, który co prawda opisuje starsze środowisko, jednak w nowszym działa to na takiej samej zasadzie (te same opcje + nowe); Przeczytaj sobie ten artykuł.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.