[? DAN ARMADARAS:] Witam, Jestem [? Dan Armadaras?].
Dzisiaj jedziemy do patrząc na debugowanie.
Nie tylko będziemy mówić o pewnych technik,
ale również będziemy patrzeć na niektóre funkcje zawarte
w IDE CS50, które pozwalają łatwe debugowanie programu.
>> Tylko jeden z przykładów coś, co może się nie udać
i to rzeczywiście coś które widzieliśmy już wcześniej.
W tym przypadku, to program C który przyjmuje liczbę całkowitą od użytkownika,
dzieli się przez dwa, a także zapewnia wyjście z powrotem do użytkownika.
Teraz od tego, co widzieliśmy wcześniej w wykładach,
Wiemy, że będzie to rzeczywiście spowodować specyficzne rodzaje problemów podziału
kiedy mają numery nieparzyste.
>> W szczególności, po prostu wyrzucić wszystko po przecinku.
Teraz wiemy, że to dzieje się inaczej.
A jeśli go uruchomić, możemy potwierdzić, nasze podejrzenia, po pierwsze, kompilacji.
A potem, przez prowadzenie i wprowadzenie nieparzystej.
>> To nie jest nic nowego.
Ale to jest w rzeczywistości Przykładem błędu, że
może istnieć w ramach większego programu że staje się trudniejsze do wyśledzenia.
Nawet jeśli wiemy, co to jest problem jest prawdziwe sedno sprawy
może być trudny do określenia szczególnie, gdy wystąpi błąd,
identyfikacja co to problemu Jest, a następnie naprawić.
Więc zapewnić to jako przykład z tego, co może być coś
że już wiemy, ale może być pochowany w ramach innych elementów kodu.
>> Więc otwarciu tego innego źródła Plik kod jako przykład,
problem ten podział jest teraz część większego programu.
Wciąż może być trochę nieco wymyślił, a my
może być w stanie łatwo go zidentyfikować, zwłaszcza
ponieważ jesteśmy po prostu omawiania tego.
Ale możemy dowiedzieć się, że to Problem ten może występować w większej skali.
>> Jeśli mogę skompilować to i teraz go uruchomić, wprowadzić nieparzysta,
widzimy, że nie mamy precyzyjnie wyjście, że możemy się spodziewać.
W tym konkretnym przypadku, możemy powiedzieć, że
chcą liczyć wszystkie numery od jednego do jakiegoś konkretnego numeru.
I widzimy, że my mają różne problemy
tutaj, jeśli mamy na wyjściu, po prostu, 0 i 1, gdy zapewniamy wejście 5.
>> Tak więc wiemy już, że istnieje problem tutaj.
Ale może nie wiedzieć dokładnie, gdzie ten problem rzeczywiście istnieje.
Teraz jeden ze sposobów, które możemy spróbować to naprawić
jest coś, co mamy już wprowadzone.
Możemy po prostu używać go w większej skali.
>> W linii 14, mamy printf tej funkcji,
co pozwala nam wydrukować stanie z różnych informacji.
I to jest coś, co Cię Należy wykorzystać w swoim programie
aby spróbować dowiedzieć się dokładnie, co jest dzieje się w różnych linii kodu.
Więc nawet jeśli nie jest to wyjście ostateczne, że faktycznie
chcą produkować z ten program, nadal
może mieć jakiś debug Oświadczenia, gdzie
Można spróbować dowiedzieć się, co dokładnie dzieje się wewnątrz naszego kodu.
>> Więc w tym przypadku, będę printf z tagiem debugowania.
W tym przypadku jest tylko ciąg debug
że mi się odpychające, tak, że staje bardzo jasne, na wyjściu mojego kodu
co to jest, że chcę pokazać.
I wyjście tutaj numer że mamy obliczone.
>> W tym przypadku, mogę chcą wiedzieć dokładnie
to, co dzieje się przed i po jakimś konkretnym obliczeń.
Więc mogę używać printf przed i po tej linii kodu.
W tym przypadku, mogłem nawet sprawiają, że nieco bardziej jasne
mówiąc debug przed i debugowania po tak
że nie myli się z wiele linii, które wyglądają identyczne.
>> Jeśli teraz skompilować to i bieg to, wprowadź numer jak pięć znowu,
widzimy, że mamy teraz wyjście przed i po
i okaże się, że nie zrobiliśmy wyraźny podziału lub jasno o liczby
że rzeczywiście chcemy zrobić.
Obecnie w tym przypadku jest nie bardzo wyraźne wyjście.
To naprawdę nie jest to oczywiste, że wynik chcemy z tego konkretnego programu.
>> I to jest, znowu, trochę wymyślone.
Ale, być może, jedną z rzeczy, które możemy zrobić, jeżeli specyfikacja powiedział
że chcemy podzielić to przez 2 i dodać 1-- więc innymi słowy,
chcemy zaokrąglić up-- następnie możemy wiedzieć, że mogliśmy
to, że konkretnej rzeczy, w tym przypadku.
A teraz wiemy, że będziemy w stanie dodać 1 do naszej połowę liczby.
>> Miejmy skompilować to i potwierdzić, że ta
zachowuje się tak, że chcemy.
Widzimy, że teraz przed o, mamy numer 5.
Po, mamy numer 3, który zgodnie z naszym opisie
jest to, co chcieliśmy zrobić.
Ale jeśli spojrzeć na Wyjście tutaj, możemy
zobaczyć, że możemy mieć inny bug w ogóle, co jest
że zaczynamy naszą liczbę od 0.
>> Teraz znowu, to jest coś, które widzieliśmy w przeszłości
i możemy rozwiązać dość łatwo.
Jednak w tym przypadku, miał również korzyści
korzystania z instrukcji printf bezpośrednio w pętli for
wiedzieć dokładnie, gdzie że błąd został występujących.
Więc printf są bardzo przydatne w pomaganiu
można określić, gdzie, właśnie w kodzie źródłowym,
konkretny błąd występuje.
>> I to jest również uświadomienie sobie że jak jesteśmy pisania kodu,
możemy mieć założenia o stanie programu.
A może mamy założenia o tym, co należy do programu
jest rzeczywiście poprawne lub niepoprawne, gdy później, jak budujemy na tym programie
i sprawiają, że część złożone i większe Program
, że zdajemy sobie sprawę, że niektóre z aspektów stanowi, że jest rzeczywiście buggy.
>> Korzystanie printf może naprawdę pomóc zawężenia i identyfikacji
regiony programu, który nie może należy zachowywać się dokładnie tak, że
spodziewać, na podstawie naszych założeń.
Ale jest inne narzędzia dostępne, jak również,
które pozwalają nam spróbować rysunku gdzie błąd występuje
a także, w szczególności, jakie rzeczy dzieje się wewnątrz programu.
>> Tak więc za pomocą printf jest bardzo przydatne, gdy chcemy
zidentyfikować konkretne obszary program, który ma jakiś błąd.
Ale również staje nudne po chwili.
W tym przypadku, to jest stosunkowo prosty program
z jednego lub dwóch zmiennych.
I to staje się bardzo łatwe dla nas wydrukować wartości tych zmiennych
w ramach większego programu.
>> Ale możemy mieć inny Program, który ma wiele zmiennych.
I nie może być zupełnie tak łatwe w użyciu printf
spróbować ocenić, co się dzieje na każdej z tych zmiennych
jak program jest wykonywany.
Jest to program, który istnieje zwany program debugger.
W tym przypadku, który będziemy stosowanie jest debugger GNU lub GDB,
która pozwala nam sprawdzić wewnętrzny funkcjonowanie programu w znacznie bardziej
Szczegółowy sposób.
>> Faktycznie możemy wykonać GDB z wiersza poleceń
tutaj po prostu wpisując GDB i polecenia, które chcemy debugować.
W tym przypadku liczy.
Teraz w tym przypadku, możemy zobaczyć, że prowadzi nas do wiersza, który mówi GDB.
I możemy rzeczywiście wykonywanie poleceń do GDB
faktycznie rozpocząć realizacji Program, zatrzymać go w niektórych punktach,
oceny zmiennych i sprawdzić zmienne, które
istnieje w stanie programu w danym momencie
i tak dalej i tak dalej.
To zapewnia dużo mocy, aby nas.
>> Ale tak się składa, że IDE CS50 również
zapewnia GUI lub użytkownika interfejs do GDB, że
pozwala nam to zrobić bez konieczności interfejs wiersza poleceń ogóle
lub nawet w ogóle.
Sposób, w jaki można uzyskać dostęp, że jest za pomocą przycisku debugowania
na samym szczycie IDE CS50.
Teraz w przeszłości, co mamy widać jest to, że możemy użyć polecenia
Linia skompilować i uruchomić program.
>> Przycisk debug robi obydwie te czynności.
Ale także przyniesie w górę Zakładka debugger po prawej stronie
która pozwala nam sprawdzić różne właściwości programu
ponieważ jest wykonywany.
Gdybym kliknij debug, w tym Sprawa będzie wychowywać
nowa karta w konsoli Okno na samym dole.
>> I widać, że ta karta ma niektóre informacje na samej górze.
I możemy w dużej mierze to zignorować.
Ale jedną z rzeczy, że chcemy zauważać
jest to, że generuje to samo, co my
dostanie, jeśli próbował uruchomić, aby na Program C w oknie terminala.
>> Tutaj widzimy, że to działa szczęk, i ma wiele flag,
i jest kompilacją nasz plik count.c, który był wybrany tab chwili
że uderzę debug.
Więc to jest bardzo przydatne, ponieważ teraz za pomocą tego przycisku debugowania,
możemy jednocześnie kompilacji, a następnie uruchomić program, który tak naprawdę
chce uruchomić.
>> Jedna z flag, które jest ważny w tym przypadku
my faktycznie przy użyciu najdłużej
ale także po prostu zrobił kilka rękę machając [niesłyszalne], który
Jest to jeden tutaj.
W brzękiem, mówi -ggdb3.
W tym przypadku, co jest mówi brzękiem, nasz kompilator,
jest to, że chcemy skompilować nasz program.
Ale również to, co jest nazywa informacje symbolem
tak, że kompilator faktycznie ma dostęp do wielu podstawowej informacji
zawarte w programie.
>> Bardziej konkretnie, ilość funkcji, które mam,
nazwiska tych funkcji, zmienne, rodzajów
że te zmienne są, i wiele innych rzeczy, które pomagają debuggera
wykonywać swoją pracę.
Teraz jest coś jeszcze że ważne jest, aby wspomnieć,
kiedy będziemy dyskutować bieganie Program w ten sposób.
>> Zauważ, że to ma rzeczywiście przyniósł nową kartę w naszej konsoli
u dołu.
Nie musimy już do interakcji bezpośrednio z oknem zaciskowej.
Ale ta nowa karta jest faktycznie okno terminala.
To po prostu jest specyficzny do biegania Program, który stworzyliśmy.
>> Należy zauważyć, że w dolnej części, w Połączenie z jakimś wyjściem
przez brzękiem kompilator i GDB, które możemy w dużym stopniu ignorować,
to faktycznie pokazuje wyjście nasz program na samym dole.
Teraz ważne jest, aby uświadomić sobie, że jedno okno w rzeczywistości
pozwoli Ci pokazać Wyjście z programu
ale również może zaakceptować wejście dla tego programu, jak również.
>> Tak więc informacja, że ​​mówi należy wprowadzić numer,
które jest takie samo wyjście, które mieliśmy miał w oknie terminala przed.
Ale to już przedstawiono w tej nowej karcie.
I może wprowadzić numer.
I to będzie w rzeczywistości funkcja, jak oczekujemy
pokazuje nam naszą debug, wyjście, wyjście, które może być wadliwy,
jak widzieliśmy wcześniej.
A na samym dole, to faktycznie ma jakieś dodatkowe wyjście
od PKB tylko powiedzieć, że program ten zakończył.
>> Teraz, jak widzieliśmy w tym szczególności prowadzony przez,
nie jest szczególnie przydatne, ponieważ nawet
że mieliśmy menu debuggera się w górę, to był jeszcze program.
W żadnym momencie nie jest w rzeczywistości wstrzymać wykonanie dla nas
aby móc zbadać cały zmienne zawarte w.
Jest coś jeszcze które musimy zrobić, aby
aby uznać, że GDB chcemy aby wstrzymać wykonanie programu
a nie tylko pozwolić mu kontynuować normalnie jak w przypadku każdego innego przypadku.
>> Aby wstrzymać wykonanie, w pewnej określonej linii,
musimy stworzyć co nazywa się punkt krytyczny.
I punkt krytyczny jest bardzo łatwo stworzyć w tym CS50 IDE poprzez myszki
i kliknięcie bezpośrednio do lewej jakiegoś konkretnego numeru linii.
Po to zrobić, czerwona kropka wydaje się, co wskazuje
że jest to obecnie punkt krytyczny.
>> I następnym razem, że biegnę GDB, to zatrzyma się wykonanie w tym momencie przerwy
po osiągnięciu tej linii kodu.
Teraz jest to ważny rzeczą, aby uświadomić sobie,
że to nie jest koniecznie tak, że każda linia kodu
jest w rzeczywistości dostępne.
Gdybym miał stworzyć funkcję tu, na example-- void F--
i po prostu zrobić linię wydruku here-- komentarzy world-- jeśli nigdy nie wywołać tę funkcję,
będzie to przypadek, że jeżeli ustawić punkt przerwy tutaj,
funkcja nie zostanie wywołana.
I dlatego ta szczególności punkt krytyczny
będzie w rzeczywistości nigdy nie zatrzymać Realizacja programu.
>> Więc powiedzmy, że ja właściwie stworzyć punkt załamania na jakiejś linii kodu
które będą faktycznie wykonywany.
Obecnie w tym przypadku, to jest Pierwsza linia w głównej funkcji.
Więc będzie to na pewno przypadek że, jak tylko rozpocząć realizację,
zostanie osiągnięty pierwszy wiersz.
GDB będzie wstrzymać wykonanie.
A potem, będę w stanie interakcji z debuggera.
>> Można ustawić wiele linii jak przerwań jeśli chcesz.
Możemy również utworzyć linię w górę tu w tym segmencie kodu
że nigdy nie zostanie osiągnięty.
Możemy również ustawić jeden poniżej.
Powodem, że będzie chcesz to zrobimy
przejść do nieco bardziej szczegółowo za chwilę.
Więc teraz, pozwól mi tylko wyłączyć te dodatkowe punkty przerwa
tak, że możemy patrzeć na to, co się dzieje, kiedy mam jedną przerwę
punkt w moim programie.
Zrobiłem kilka zmiany w tym programie.
Więc muszę go zapisać.
Będę kliknij debug tak, że mogę rozpocząć kompilację, a następnie
wykonanie debuggera.
>> Przekonamy się, że po chwilach wiersz, który wybraliśmy jako przerwy
punkt jest zaznaczony na żółto.
Możemy również zauważyć, że w w prawym górnym rogu panelu debugowania
że ikona pauzy okazało w małą ikonę odtwarzania.
Oznacza to, że mamy przerwę wykonanie w tym szczególnym przypadku.
I naciśnięcie przycisku odtwarzania będzie pozwalają nam wznowić wykonanie
w tym konkretnym miejscu.
>> Zauważ, że jest kilka innych Przyciski dostępne w tym panelu Debug
równie dobrze.
Krok w ciągu, co pozwala mi wykonanie tej jednej linii kodu
i krok na tej linii do następny, które w tym wypadku
oznaczałoby, że printf instrukcja jest wykonywana.
A zostanie on wstrzymać Wykonanie na linii 13, jak tak.
>> I jest także krokiem do funkcji, która
jest przydatna, gdy stworzyłem inne Funkcje gdzie indziej w kodzie źródłowym.
I chcę, aby wejść do te funkcje, a nie
wykonać tę funkcję, jako całości.
Ale będziemy wyglądać bardziej na etapie do funkcji w chwilę.
Teraz zauważyć kilka innych rzeczy, które faktycznie istnieją w tym panelu debugowania.
>> Mamy ten panel o nazwie zadzwoń do stosu, który pokazuje nam,
gdzie dokładnie jesteśmy.
W tym przypadku, znajduje się wewnątrz z głównych funkcji.
Nasz skrypt nazywa count.c.
A my stało się na wiersz 13, kolumna jeden, który
jest właśnie to, co podkreślił regionu kodu źródłowego wskazuje również.
>> Teraz zauważył, że ten pokazuje również, w ramach lokalnej części zmiennej
wszystkich zmiennych istnieją w tej funkcji.
Ważne jest, aby pamiętać, że wszystkie zmienne
pojawi się w tej zmiennej lokalnej Sekcja wewnątrz funkcji,
nawet przed ich zdefiniowaniem.
Widzimy tutaj, że mamy zmienną nazywa num, ma domyślną wartość 0,
i jest on typu int.
>> Teraz, zanim faktycznie zainicjować wszystkie z tych zmiennych
Nie jesteśmy zawsze gwarantowane, aby zobaczyć wartość 0.
I w zależności od innych egzekucji które zostały wykonane
i stan pamięci, gdy faktycznie uruchomić ten program,
Może się okazać, że nie widzę wartości 0
, a zamiast tego inne szalone numery.
>> Ale nie martw się o to.
To nie będzie istotne, dopóki faktycznie zainicjować wartości.
Teraz w tym przypadku widzimy, że Wykonałam kilka wyjść.
A ja, teraz, przerwał egzekucję.
Jednak w tym przypadku to, co Naprawdę chcę zrobić
jest teraz krok na tej linii kodu tak, że mogę naprawdę
zapytanie użytkownika o tym int, że chcemy użyć w naszym programie.
>> Obecnie w tym przypadku, gdy I hit krok nad, zawiadomienie
że Pauza lub raczej CV Przycisk zmieniła się do tego przycisku pauzy
ponieważ kod ten jest faktycznie wykonywany.
Co się dzieje teraz jest to, że
czeka na nas, aby wprowadzić pewne informacje jak widać przez naszego tekstu wyjściowego
na samym dole.
>> Więc teraz, to jest faktycznie nie zatrzymał się,
chociaż to rodzaj pojawia się, być, bo nic się nie dzieje.
Ale tak się składa, że ​​w mój konkretny przypadek na linii 13,
Czekam na dane od użytkownika.
I tak GDB nie jest w stanie kontrolować program, jak to działa.
>> Teraz kolejny raz, kiedy wprowadzić pewne input-- więc będę wprowadzić ten numer 5,
jak widzieliśmy w past-- naciśnij Enter, a my
zauważyć, że bezpośrednio, GDB pauz i, ponownie, wskazuje na następną linię.
Ale zauważ, że teraz, jako wynikiem naszych wprowadzania wartości,
zaktualizowaliśmy tę wartość w środku naszych zmiennych lokalnych, które
jest bardzo przydatne, aby dokładnie wiedzieć, co to było ich w pamięci.
>> Teraz mogę pozwolić ten program, aby kontynuować odtwarzania do końca jego wykonanie
trafiając CV.
Widzimy, że bardzo szybko Program wykończenie robi wykonywania
o to samo wyjście, które przedtem, debugger zamyka,
a teraz ten program zatrzymał się całkowicie.
>> I pokazują, że tylko dla cele widząc, co
się dzieje, gdy rzeczywiście trafiliśmy CV.
Ale tak naprawdę będziemy chcę wrócić do tego programu
tak, że możemy spróbować debugowania właśnie to, co się dzieje.
Teraz, używam debugger, że może Nie potrzebujemy tych sprawozdań debugowania printf.
>> Mogłem więc usunąć je jak będę robić teraz po prostu wrócić do naszej prostszy kod
że mieliśmy przed chwilą.
Teraz, kiedy zapisać program i uruchomić,
będzie ponownie udać się do tego pierwszego Break Point, które miałem na linii 11.
I będę w stanie sprawdzić moje zmienne, jak chcę zrobić.
>> Tak się składa, że ​​ten część nie jest bardzo ciekawy,
I wiem, że będę wydrukować to oświadczenie.
Proszę wprowadzić numer.
I wtedy wiem, że będę poprosić użytkownika o tym liczby całkowitej.
Być może więc, tak naprawdę chcą przenieść Point Break trochę dalej w dół.
>> Możesz usunąć punkty przerwy klikając ponownie bezpośrednio
z lewej strony tego numeru telefonicznego.
Że czerwona kropka zniknie, wskazując, że punkt krytyczny już nie ma.
Obecnie w tym wypadku wykonanie zostało wstrzymane.
A więc to nie jest rzeczywiście będzie wznowić w tym konkretnym przypadku.
Ale mogę ustawić sobie przerwę litera a nieco później.
>> I kiedy teraz wznowić Kod będzie wznowić i powiedz
punkt tego punktu krytycznego.
Znowu uderzył CV.
Nie wydaje się coś dzieje.
Ale to dlatego, że mój Kod czeka na wejście.
Będę wprowadzić numer 5, naciśnij Enter, a Teraz następny punkt przerwa będzie hit.
>> Teraz w tym przypadku jest jest linia kodu
że przed wiedzieliśmy, okazał się być wadliwy.
Warto więc ocenić, co się dzieje, w tym konkretnym momencie.
Gdy jest zaznaczona linia ta linia nie została jeszcze wykonana.
Więc w tym przypadku, możemy zobaczyć że mam numer, który
Mam liczbę całkowitą o nazwie num, że ma wartość 5.
A ja zamierzam być wykonywania niektóre matematyki na ten numer.
>> Gdybym krok nad tym, możemy Zauważ, że wartość num
zmienił się zgodnie z arytmetyka, że ​​mamy rzeczywiście zrobić.
I teraz, że jesteśmy to dla pętli wewnątrz
i teraz, że dla pętli Sam jest podświetlony,
widzimy, że mamy nowy Zmienna o nazwie: i że
ma być wykorzystywane w tej pętli.
>> Teraz pamiętać przed tym I wspomniano, że czasami jesteś
zobaczymy jakiś szalony Domyślnie numery jak przed tym numerem
lub, że zmienna jest właściwie zainicjowana.
Widzimy, że właśnie tutaj, w zmiennej tej
nazywa i, co nie ma jeszcze zainicjowany
w czasie przedstawienia.
Ale widać, że ma pewną liczbę że nie będziemy właściwie spodziewać.
>> Dobrze.
Nie martw się o to bo mamy w rzeczywistości nie
inicjowane tej liczby do czasu I krok na tej linii, a wartość
i został zainicjowany na wartość 1.
Tak więc, aby zobaczyć, że to jest rzeczywiście sprawa, niech krok nad.
Możemy teraz zobaczyć, że Linia została wykonana.
A teraz jesteśmy podkreślając ta linia printf.
>> A teraz możemy zobaczyć, jak nasze wartości z I i 3 z czasem uległy zmianie.
Jest to bardzo przydatne do zrobienia, w rzeczywistości, jest krok na linii wielokrotnie.
I można znaleźć to, co w rzeczywistości dzieje się wewnątrz Twojego pętli for
i co się dzieje z zmienne wewnątrz tej pętli
w tym realizacji programu występuje jeden krok na raz.
>> Teraz w tym momencie podszedł na tyle,
że jestem teraz na końcu mojego programu.
Gdybym krok nad tym, to będzie faktycznie przestanie wykonanie
jak widzieliśmy w przeszłości.
Pozwól mi ponownie uruchomić tego, jeszcze raz, tak że mogę zwrócić się coś innego,
równie dobrze.
>> W tym przypadku jest teraz pyta mnie, znowu,
na liczbę, która I będzie znowu wejść.
Ale tym razem mam zamiar wprowadzić w większą ilość, tak aby dla pętli
będzie iteracji więcej razy.
W tym przypadku, zamierzam wprowadzić wartość 11.
>> Teraz ponownie, ponieważ chciałbym ustawić punkt załamania na linii 15,
to będzie zaznaczyć tę linię.
Widzimy, że nasze Numer 11 jest prawidłowo
reprezentowane w naszych zmiennych lokalnych.
Przestępując, że możemy teraz obserwować co się dzieje z naszą wartość i
jak postępować w środku to dla pętli.
Robi zwiększany za każdym razem, dotrzeć na szczyt, że na pętli.
>> Teraz jedna z rzeczy, które mogą być przydatne podczas wykonywania zrobić
ten program jest dla mnie rzeczywiście zmienić nurt zmiennych zobaczyć
co się dzieje z moim programie.
W tym przypadku, mogę rzeczywiście kliknij dwukrotnie wartość.
Zauważ, że staje się pole tekstowe.
>> Teraz mogę wprowadzić różne wartości łącznie
zobaczyć, jak mój program zachowuje się kiedy zmieniłem tę zmienną.
Obecnie w tym przypadku, zmienna I teraz zawiera wartość 10.
Ale program jest nadal Zatrzymał się egzekucji.
Kiedy krok nad, widzę, że wartość i, który wszedłem jako 10,
nie jest większa od wartości num co od razu powoduje pętli for
aby zatrzymać wykonywanie.
>> Teraz to nie jest jedyny Powodem, dla którego będzie
Aby zmodyfikować zmienną w miejscu.
Może rzeczywiście chcesz spróbować zmodyfikować go tak,
że można kontynuować wykonywanie pętli
albo tak, że można zmodyfikować jakaś wartość przed nim
osiągnie pewien określony zestaw arytmetyki że masz zamiar wykonać.
>> Więc teraz, że rzeczywiście możemy zmienić wartość i jak program był wykonywany,
spowodował pętli for, aby zamknąć przedwcześnie, bo się nagle, i
okazał się być większa niż wartość z num, co oznacza, że ​​na pętli
nie są już potrzebne do wykonania.
Co więcej, stało się to za tak, że zmieniliśmy wartość i
kiedy została podkreślona linia 17, który był moment
że do wykonania pętli faktycznie jest oceniany.
>> Gdybym zmienił wartości i na innej linii, powiedzmy 19,
nie widzieliśmy inna zachowanie, bo linia 19 będzie
zostały wykonane przed pętli warunek został reevaluated.
Teraz w tym momencie, jestem, jeszcze raz, po zakończeniu programu.
A ja mogę na to pozwolić, aby przejść do pozwala mój program rzucić naturalnie.
Ale jest kilka rzeczy, które są ważne, aby zabrać
z tym konkretnym dyskusji.
Musisz ocenić własne założenia
o tym, jak należy zachowywać się kod.
Za każdym razem, że niektóre kawałek Kod wiesz w stanie pracować,
że może być czerwona flaga iść wstecz i ocenić, i upewnij się,
że swoim założeniu jak ten kod działa
jest rzeczywiście prawdziwe, jak to jest wyrażone w kodzie źródłowym.
>> Ale jeszcze bardziej do punktu było, kiedy używamy debuggera,
można umieścić punkty przerwania na różne linie kodu,
co spowoduje debugger do wstrzymać wykonanie na każdej z tych linii
tak aby można było ocenić pamięci lub nawet zmienić go w miejscu.
I znowu, pamiętaj, że możesz tworzenie wielu punktów przerwania tak, że
może wznowić egzekucję, pomiń na dużych porcji kodu,
i będzie ona automatycznie wstrzymać na kolejnym punktem załamania.
>> Jest rzeczywiście bardziej zaawansowany cechy debuggera, jak również.
Ale musimy skierować niektórych późniejszych filmów
aby naprawdę odciąć jak używać tych funkcji.
Na razie, dziękuję bardzo za oglądanie.
Powodzenia debugowania.