[Powered by Google Translate] Gdb, GNU Layihəsinin Debugger, C üçün güclü bir hata vasitədir
çox digər dillərdə birlikdə.
Onlar icra etdiyiniz zaman, sizin C proqramlar içərisində ətrafında soxmaq üçün imkan verir
və bu da sizə olur nə görmək üçün imkan verir
zaman proqram qəzaları.
Bu, sağ olduqca uykusuz var?
Gdb pulsuz proqram, və bir çox məşhur UNİX çalışır və
Windows-based əməliyyat sistemləri, belə ki, bir çox geniş aracıdır.
>> Siz bu sevgi öyrənmək lazımdır.
Gdb lehte hataları aşağı izleme daha asan vaxt
guesses istifadə etməklə qarışdırmaq istəyənlər çox
və printout hesabatlarının sonsuz məbləğlər.
Gdb bir terminal ilə qarşılıqlı bilər o deməkdir ki, bir komanda-line alətdir
siçan ilə klaviatura vasitəsilə əmrləri yerinə tıklayarak düymələri verilməsi.
>> Gdb başlamaq üçün, sözün tez və hit yalnız type gdb daxil edin.
Siz ekran çap bəzi sətirlər görürsünüz
, siz yayınlıyorsanız ki, gdb buraxılış göstərən
onun copyright informasiya və sonunda siz gdb tez görəcəksiniz: (gdb).
Bu gdb əmrləri üçün hazır olduğunu bilmelerine imkan verir.
Bu nöqtədə, necə bilmək üçün ən əhəmiyyətli şey çıxmaq edilir.
Xoşbəxtlikdən, bu olduqca sadədir.
Bu çıxmaq əmr yalnız edir.
Qısa olaraq, yalnız q çox istifadə edə bilərsiniz.
Əyləncə gdb qədər önyükleme və sonra dərhal çıxmaq kimi kimi,
bir proqram debug kömək gdb istifadə haqqında danışmaq indi edək.
>> Başlamaq üçün, burada factorial.c bir proqram var
bir int alır və onun faktöryel hesablamaq çalışır.
Əgər əvvəl factorials görməmişik və ya onlara xatırlamıram
Bu sayı faktöryel n n məhsulu bərabər - (n - 1), (n - 2), və s -
siz 1 hit qədər.
Buna görə də, 3-faktöryel 3 * 2 * 1 və ya 6,
və 4-faktöryel 4 * 3 * 2 * 1 və ya 24.
Sıfır faktöryel bir tək halda, o, 1 deyil
və mənfi integers və factorials müəyyən edilməmişdir.
Hər halda, mənim faktöryel proqramı haqqında bir şey funky edir.
Mən bunu çalıştırdığınızda, factorials ilə əlaqəsi var ki, qəribə ədəd çap edir.
>> Belə ki, biz nə anlamaq kömək gdb istifadə edə bilərsiniz.
Gdb, çalıştırılabilir fayllar fəaliyyət
olan tərtibi prosesi istehsal ikili faylları.
Yəni, biz. C gdb çalıştırmak və ya bilməz. Factorial.c kimi h kodunu faylları.
Biz yerine faktöryel bu almaq istəyirsinizsə.
Proqram hər hansı bir komanda-line dəlilləri tələb varsa,
biz onlara daxil istediğiniz bu.
Bu halda, faktöryel, hər hansı bir komanda-line dəlilləri tələb etmir
biz yalnız qısa run və ya r yazın.
>> Bu faktöryel proqramı davam başlayacaq.
Proqram çalışan vermir zaman, mən gdb geri təklif almaq lazımdır.
OK, 4 və faktöryel, yenə eyni şey edək.
Bütün hüquqlar, biz gdb burada junk eyni cür əldə etdiyiniz görürük.
Proqramı başa çatdı İndi ki,
Biz getmək və dövlət hər hansı daxil ola bilər
biz nə edə bilərsiniz əvvəl yenidən çalışan başlamaq lazımdır.
Lakin biz onun run ortasında var isə bunu dayandırmaq üçün bir yol lazımdır.
>> Bunu etmək üçün, biz breakpoint deyirlər nə istifadə edin.
Breakpoints xüsusi funksiyası və ya mənbə kodu xəttində fasilə proqramı gdb demək
belə ki, proqram dövlət yoxlamaq olar
dəyişənlərin dəyərlərinin, yaddaş dövlət və belə, o nöqtədə.
Mən, həqiqətən, hər şeyi yanlış gedir yerləşir bilmirəm ildən,
>> Mən yalnız sağ çox başında ayıklama başlamaq istəyirəm
əsas başlayır doğru zaman.
Biz fasilə funksiyanı istifadə edərək əsas əvvəlində breakpoint qurmaq lazımdır.
Biz də fasilə qısaltmaq b istifadə edə bilərsiniz.
İndi proqram yeniden yayınlanmaya başlamaq edək.
Burada gdb bizə deyir kimi, əsas əvvəlinə var.
Icra haqqında, ancaq hələ ki kodu line
bu printf xəttidir.
Biz kodu bu xətti həyata və növbəti line getmək gdb deyə bilərsiniz
Növbəti və ya n komanda ilə.
>> Bütün hüquqlar, indi gdb biz GetInt line olduğunu bizə deyir.
Mən printf xətti etmədi kimi görünür bilirik ki,
biz görmürük bəri, ekranda çap həyata "müsbət tam daxil edin"
ancaq faktiki run idi.
Biz gördükdə əməliyyat sistemi ekran üçün yazılı bir şey yatırmaq edir
tamamilə niyə çapı ilə ayıklama ki, var qədər
bəzən etibarsız görünə bilər.
Hər halda, kodu, növbəti line getmək və bir int daxil yenə edək.
Yenə növü 4 edək.
Belə ki, bu qəribə görünür. Biz, gdb əsasən line 12 etdiyiniz
lakin icra haqqında ki, növbəti line bir buruq brace edir.
>> Yalnız bir loop sonunda istəyirik deməkdir ki, bizim nə isə əslində loop,
və gdb bizə izah olunur ki, xitam vəziyyəti, sıfırdan yəni heç biri az,
Növbəti icra edəcək.
Heç bir az confusing alır varsa,
biz siyahısına və ya l komanda ilə gdb olan mənbə kodu qoparmaq bilər.
Bu mənbə kodu çap
ki, biz hazırda olduğunuz xətti ətrafında mərkəzi var.
Yenə siyahısı və ya l yazın, biz xətləri növbəti set çap görəcəksiniz.
Biz fayl sonunda hit qədər bunu edə bilərsiniz.
>> Biz idi geri almaq üçün, bir xətt nömrəsi ilə siyahı təmin edə bilər
Bu halda, line 12.
Hər halda, üzrə hərəkət edək.
İndi biz 4 loop etdiyiniz.
Gəlin bizim num dəyişən 4 şey əmin olun.
Biz çap, və ya p, komanda ilə bunu.
Belə ki, gdb biz gözlənildiyi kimi num həqiqətən, 4 saxlanılması ki, bizə deyir.
Ki, gdb yazdıran $ 1 out xüsusi gdb dəyişir
indi də sayı 4 saxlamaq üçün müəyyən edilir.
İndi bu iqnor edə bilər, lakin bu gdb dəyişənlərin lazımlı super gəlib
daha inkişaf etmiş hallarda siz keçmişdə etdiyiniz nə geri istədiyiniz zaman.
Hər halda, sonrakı hərəkət, biz loop üçün vasitəsilə hərəkət başlamaq görürük.
Bit by bit n burada vasitəsilə davam edək.
Əksinə yazaraq n hər dəfə çox, siz də daxil hit bilər yalnız.
Bir şey yazaraq olmadan daxil hit zaman, gdb yalnız əvvəlki komanda təkrar edir.
Belə ki, indi biz printf zəng edib etdik.
Biz həqiqətən loop 4 dəfə bizim keçmişdir etdiyiniz kimi, bu, görünür
olan biz 1, 2, 3 və 4-çoxaltmaq üçün etmək istəyirəm nə.
>> Hər şey çalışan kimi görünür,
biz növbəti yenidən hit zaman istisna olmaqla, yerine 24 Bu çox almaq.
Biz faktöryel istifadə p dəyəri çap varsa,
biz faktöryel bu bu kütləvi sayı var olduğunu görürük.
Something mütləq səhv edəcək.
Bu nöqtədə, baxmayaraq ki, biz demək olar ki, proqramın sonunda var
və bir şey düzeltmek üçün çox geç.
>> Bununla belə, biz təsdiq yenidən və sonra y r yazaraq proqramı yenidən başlada bilərsiniz.
İndi biz əsas əvvəlində bizim breakpoint geri istəyirik.
Biz hər şeyi n oxu ilə gözəl görünür ki, bilirik.
biz n qabaqda atlayabilir.
Də bunu sonra Alternativ olaraq, biz yeni breakpoint bilərsiniz isə loop
və orada jump. Nin bunu edək.
Line 14 yalnız loop sonra gəlir kimi görünür.
Nin bir breakpoint müəyyən edək.
Bu breakpoint komanda fayl adını belirtmek üçün yaxşı təcrübə var
Bir neçə faylları ilə iş edirsinizsə gdb qarışıq bilərsiniz ildən.
Irəlidə bu breakpoint hərəkət üçün, davam ya c funksiyanı istifadə edəcəyik.
>> OK, burada biz loop üçün var.
Nin loop üçün daxil 1 daha line gedək,
və sonra neler görmek üçün çap dəyişənlərin başlamaq lazımdır.
Gəlin gözlənildiyi kimi i, həqiqətən 1 əmin olun.
Bütün yaxşı ki Yup.
Haqqında faktöryel nə olsa?
Heç bir yaxşı ki Whoa.
Biz burada bir böyük mənfi nömrəsi var.
Ki, baş How'd?
Yaxşı, biz kodu geri baxmaq əgər,
biz bu başlatılmış heç ki, biz yalnız orada zibil var.
Bu mütləq bizim hesablanması atmaq edəcək.
>> Xoşbəxtlikdən, biz bu düzeltmek üçün gdb tərk etmək yoxdur.
Biz burada başlamaq və sonra çap funksiyanı istifadə edərək, kodu bunu düzeltebilirsiniz.
Sıfır və 1 factorials 1 həm çünki Biz, 1 onu başlamaq lazımdır
biz sıfır onu başlamaq əgər, biz həmişə nəticəsində sıfır ilə başa ediyorum.
Siz super lazımlı olan hər hansı bir dəyişən bu şəkildə təyin edə bilərsiniz.
İndi, bizim proqram davam edək.
Gəlin bu ehtimal yerdə hər şey var əmin olun.
Say 4 olmalıdır i 1 olmalıdır və faktöryel çox 1 olmalıdır.
Biz bu prosesi qısa və bizim yerli dəyişənlərin bütün çap edə bilərsiniz
super faydalı komanda info yerli ilə,
olan in-daxilində yerli dəyişənlərin bütün görüntüler.
Hər şey getmək üçün yaxşı kimi Hər halda, bu, görünür.
>> Yalnız əmin bir go-ətrafında loop nə edək.
OK, hər şey böyük görünür.
İndi sonuna getmək üçün davam komanda istifadə edə bilərsiniz.
Sweet! 4 faktöryel gözlənildiyi kimi 24 çap.
İndi bizim kodu bu fix bilərsiniz.
Əksinə gdb həyata çıxmaq çox, biz bunu başqa terminal sekmesini istifadə edəcəyik.
Bizim gdb nişanı geri Going, indi bizim çalıştırılabilir derleyeceğiz lazımdır.
Gdb haqqında ən yaxşı şey biri siz run gdb tərk etmək lazım deyil ki.
Belə ki, biz, köhnə breakpoints vuruş saxlamaq olmayan
Gəlin onları aradan, bu guessed, komanda aradan buraxın.
Bu, bizim breakpoints bütün aradan bırakır.
İndi biz r ilə proqramı yenidən başladın və hər şey tamam əmin edə bilərsiniz.
Hər şey getmək üçün yaxşı kimi görünür.
24 həyata 4 baskı faktöryel, yalnız kimi biz düşündük.
Gdb sizin Toolbox əldə etdiyiniz ən faydalı tools biridir.
>> Siz gdb ilə edə bilərsiniz bir ton daha çox şeyi var
siz sadə çapı ilə edə bilərsiniz daha çox.
Növbəti dəfə proqram, istədiyiniz nə deyil
içərisində neler həyata rəqəm gdb çalışan çalışırıq.
Təcrübə bir az, siz heç bir zaman sağ bug aşağı qazılması bilərsiniz.
My name Nate Hardison edir. Bu CS50 edir.