1 00:00:00,000 --> 00:00:05,640 2 00:00:05,640 --> 00:00:06,830 >> டக் LLOYD: சரி, GDB. 3 00:00:06,830 --> 00:00:08,480 அது சரியாக என்ன? 4 00:00:08,480 --> 00:00:11,310 நிற்கும் எனவே GDB, குனு பிழைத்திருத்தி ஐந்து, 5 00:00:11,310 --> 00:00:15,040 உண்மையிலேயே ஒரு அற்புதமான கருவி என்று நாம் ஆகும் எங்கள் திட்டங்களை debug பயன்படுத்துகிறோம், 6 00:00:15,040 --> 00:00:18,210 அல்லது விஷயங்களை எங்கே கண்டுபிடிக்க எங்கள் திட்டங்கள் தவறு நடக்கிறது. 7 00:00:18,210 --> 00:00:22,590 GDB என அதிசயமாக சக்திவாய்ந்த ஆனால் அது வெளியீடு மற்றும் தொடர்பு 8 00:00:22,590 --> 00:00:23,830 சிறிது புரிந்து இருக்க முடியும். 9 00:00:23,830 --> 00:00:28,210 இது பொதுவாக ஒரு கட்டளை வரி கருவியாகும், மற்றும் அதை நீங்கள் செய்திகளை நிறைய துரத்த முடியும். 10 00:00:28,210 --> 00:00:31,144 அது கடுமையாக வகையான முடியும் நடக்கிறது சரியாக என்ன இட. 11 00:00:31,144 --> 00:00:33,560 அதிர்ஷ்டவசமாக, நாங்கள் எடுத்து விட்டேன் படிகள் நீங்கள் இந்த பிரச்சினையை சரி செய்ய 12 00:00:33,560 --> 00:00:36,281 நீங்கள் CS50 மூலம் வேலை என. 13 00:00:36,281 --> 00:00:39,030 வரைகலை பயன்படுத்தி இல்லை என்றால் பிழை திருத்தி, இது என் சக டான் 14 00:00:39,030 --> 00:00:41,570 Armandarse மிகவும் பேசியிருக்கிறார் ஒரு வீடியோ பற்றி ஒரு பிட் என்று 15 00:00:41,570 --> 00:00:44,740 இங்கு இருக்க வேண்டும் இப்போது, நீங்கள் வேண்டும் 16 00:00:44,740 --> 00:00:48,270 இந்த கட்டளை வரி பயன்படுத்த கருவிகள், GDB வேலை. 17 00:00:48,270 --> 00:00:51,250 நீங்கள் CS50 வேலை என்றால் எஸ்டி, நீங்கள் இதை செய்ய தேவையில்லை. 18 00:00:51,250 --> 00:00:53,550 ஆனால் நீங்கள் இல்லை என்றால் , CS50 IDE இல் வேலை, 19 00:00:53,550 --> 00:00:55,750 ஒருவேளை ஒரு பதிப்பு பயன்படுத்தி CS50 அப்ளையன்ஸ் என்ற, 20 00:00:55,750 --> 00:00:58,860 அல்லது வேறு லினக்ஸ் இயக்க GDB கொண்ட அமைப்பு, அதை நிறுவ 21 00:00:58,860 --> 00:01:00,980 நீங்கள் பயன்படுத்த வேண்டும் இந்த கட்டளை வரி கருவிகள். 22 00:01:00,980 --> 00:01:02,860 >> இருந்து நீங்கள் போகலாம் அது தான், அதை செய்ய வேண்டும் 23 00:01:02,860 --> 00:01:06,280 எப்படி புரிந்து கொள்ள பயனுள்ளதாக GDB, கட்டளை வரியில் இருந்து வேலை. 24 00:01:06,280 --> 00:01:09,650 ஆனால் மீண்டும், நீங்கள் என்றால் , CS50 IDE பயன்படுத்தி, நீங்கள் 25 00:01:09,650 --> 00:01:15,400 வரைகலை வழு பயன்படுத்த முடியும் என்று IDE உடன் கட்டப்பட்டுள்ளது. 26 00:01:15,400 --> 00:01:18,750 எனவே விஷயங்களை நடக்கிறது பெற GDB என பிழைத்திருத்தம் தொடங்க 27 00:01:18,750 --> 00:01:21,220 ஒரு குறிப்பிட்ட செயல்முறை திட்டம், நீங்கள் செய்ய வேண்டும் 28 00:01:21,220 --> 00:01:23,810 GDB, தொடர்ந்து தட்டச்சு நிரல் பெயர் மூலம். 29 00:01:23,810 --> 00:01:28,620 எனவே எடுத்துக்காட்டாக, உங்கள் திட்டம் என்றால் ஹலோ, நீங்கள் GDB ஹலோ தட்டச்சு வேண்டும். 30 00:01:28,620 --> 00:01:31,210 >> நீங்கள் செய்யும் போது, நீங்கள் போகிறீர்கள் GDB, சுற்றுச்சூழலை இழுக்க. 31 00:01:31,210 --> 00:01:33,800 உங்கள் வரி மாற்ற, மற்றும் இருப்பதற்கு பதிலாக வழக்கமாக என்ன அது 32 00:01:33,800 --> 00:01:35,841 நீங்கள் விஷயங்களை தட்டச்சு செய்யும் போது ஆகிறது கட்டளை வரியில் கள் மணிக்கு, 33 00:01:35,841 --> 00:01:38,115 உங்கள் வழக்கமான அனைத்து குறுவட்டு லினக்ஸ், உங்கள் வரியில் கட்டளையிடுகிறது 34 00:01:38,115 --> 00:01:42,200 , ஒருவேளை, ஏதாவது மாறும் அடைப்புக்குறிக்குள் போன்ற, GDB அடைப்புக்குறிக்குள். 35 00:01:42,200 --> 00:01:46,630 ஏனென்றால், உங்கள் புதிய GDB வரியில் தான் நீங்கள் GDB சூழல் உள்ளே இருக்கிறோம். 36 00:01:46,630 --> 00:01:49,830 ஒருமுறை அந்த சூழலில் உள்ளே, இரண்டு முக்கிய கட்டளைகளை இருக்கிறது 37 00:01:49,830 --> 00:01:52,290 ஒருவேளை நீங்கள் பயன்படுத்த வேண்டும் என்று பின்வரும் வரிசையில். 38 00:01:52,290 --> 00:01:55,200 >> முதல் ஆ, இது இடைவெளி குறுகிய உள்ளது. 39 00:01:55,200 --> 00:01:58,690 நீங்கள் ஆ, நீங்கள் பொதுவாக தட்டச்சு பிறகு ஒரு விழா என்ற பெயரில் தட்டச்சு, 40 00:01:58,690 --> 00:02:01,040 அல்லது நீங்கள் தெரியும் நடக்கும் என்ன வரி எண்ணிக்கை சுமார் 41 00:02:01,040 --> 00:02:04,100 உங்கள் திட்டத்தை தொடங்கி ஒரு சிறிய வித்தியாசமாக நடந்து, 42 00:02:04,100 --> 00:02:06,370 நீங்கள் ஒரு வரி தட்டச்சு செய்யலாம் அங்கு பல அதே. 43 00:02:06,370 --> 00:02:09,660 என்ன B, அல்லது இடைவெளி, இல்லை அது உங்கள் நிரல் அனுமதிக்கிறது 44 00:02:09,660 --> 00:02:13,270 ஒரு சில புள்ளி வரை இயக்க, செயல்பாடு அதாவது, பெயர் 45 00:02:13,270 --> 00:02:15,880 நீங்கள் குறிப்பிடும் அல்லது வரி என்று நீங்கள் குறிப்பிடும் அந்த எண். 46 00:02:15,880 --> 00:02:18,590 >> அந்த கட்டத்தில், அது மரணதண்டனை உறைந்துவிடும். 47 00:02:18,590 --> 00:02:21,670 இது ஏனெனில், ஒரு நல்ல விஷயம் மரணதண்டனை உறைந்துள்ள முறை, 48 00:02:21,670 --> 00:02:25,214 மிகவும் மெதுவாக தொடங்க முடியும் உங்கள் திட்டத்தின் மூலம் நடவடிக்கை. 49 00:02:25,214 --> 00:02:28,130 நீங்கள் தான் என்றால் பொதுவாக, இயங்கும் உங்கள் திட்டங்கள், அவர்கள் அழகாக குறுகிய இருக்கிறோம். 50 00:02:28,130 --> 00:02:31,250 பொதுவாக, நீங்கள் டாட் தட்டச்சு என்ன உங்கள் திட்டத்தின் பெயர், வெற்றி உள்ளிடவும் 51 00:02:31,250 --> 00:02:33,470 மற்றும் நீங்கள் மிளிரும் முடியும் முன், உங்கள் திட்டம் ஏற்கனவே முடிந்துவிட்டது. 52 00:02:33,470 --> 00:02:36,620 அது உண்மையில் முயற்சி நிறைய நேரம் இல்லை மற்றும் தவறு என்ன நடக்கிறது கண்டுபிடிக்க. 53 00:02:36,620 --> 00:02:40,920 அது உண்மையில் விஷயங்களை மெதுவாக முடியும் எனவே கீழே ஆ ஒரு பிரேக் பாயிண்ட் அமைக்க, 54 00:02:40,920 --> 00:02:43,040 பின்னர் நுழைவதை. 55 00:02:43,040 --> 00:02:46,169 >> நீங்கள் உங்கள் முறித்து அமைக்க பின்னர் முறை புள்ளி நீங்கள் நிரலை இயக்க முடியும். 56 00:02:46,169 --> 00:02:47,960 நீங்கள் எந்த இருந்தால் கட்டளை வரி வாதங்கள், 57 00:02:47,960 --> 00:02:51,610 நீங்கள் இங்கே குறிப்பிட போது நீங்கள் உங்கள் நிரல் பெயர், GDB தட்டச்சு செய்யவும். 58 00:02:51,610 --> 00:02:55,980 நீங்கள் அனைத்து கட்டளை வரி குறிப்பிட R, அல்லது ரன் எடுத்து வாதங்கள், 59 00:02:55,980 --> 00:03:00,270 , பின்னர் அதை கட்டளை வரி அளவுருக்களை நீங்கள் உங்கள் திட்டம் உள்ளே வேண்டும். 60 00:03:00,270 --> 00:03:03,510 மற்ற பல உண்மையில் உள்ளன முக்கியமான மற்றும் பயனுள்ள கட்டளைகளை 61 00:03:03,510 --> 00:03:04,970 மொத்த உள்நாட்டு சூழலில் உள்ளே. 62 00:03:04,970 --> 00:03:07,540 அதனால் தான் விரைவில் என்னை அனுமதிக்க இன்னும் சில மேல் போக. 63 00:03:07,540 --> 00:03:11,320 >> முதல், அடுத்த குறுகிய உள்ளது எந்த n, ஆகிறது நீங்கள், அடுத்த பதிலாக N தட்டச்சு செய்யலாம் 64 00:03:11,320 --> 00:03:12,304 இருவரும் வேலை செய்யும். 65 00:03:12,304 --> 00:03:13,470 அது தான் சுருக்கெழுத்து தான். 66 00:03:13,470 --> 00:03:17,540 ஒருவேளை நீங்கள் ஏற்கனவே வந்திருக்கிறேன் என விஷயங்களை தட்டச்சு முடியும், பயன்படுத்தப்படும் 67 00:03:17,540 --> 00:03:20,520 குறுகிய பொதுவாக நல்லது. 68 00:03:20,520 --> 00:03:24,100 என்ன செய்வேன், அதை ஆகும் குறியீடு முன்னோக்கி ஒரு தொகுதி நடவடிக்கை. 69 00:03:24,100 --> 00:03:26,170 எனவே அது முன்னோக்கி செல்ல வேண்டும் ஒரு சார்பு அழைப்பு வரை. 70 00:03:26,170 --> 00:03:28,350 பின்னர் பதிலாக அந்த விழாவில் டைவிங் 71 00:03:28,350 --> 00:03:33,130 மற்றும் என்று செயல்பாடுகளை அனைத்து வழியாக சென்று குறியீடு, அது வெறும் செயல்பாடு வேண்டும். 72 00:03:33,130 --> 00:03:34,400 >> செயல்பாடு என அழைக்கப்படும். 73 00:03:34,400 --> 00:03:35,733 அதன் வேலைகள் செய்வோம். 74 00:03:35,733 --> 00:03:38,870 அது ஒரு மதிப்பு திரும்ப வேண்டும் என்ற அந்த செயல்பாடு. 75 00:03:38,870 --> 00:03:42,490 பின்னர் நீங்கள் செல்ல வேண்டும் என்று அழைப்பு செயல்பாடு அடுத்த வரி. 76 00:03:42,490 --> 00:03:44,555 நீங்கள் நடவடிக்கை வேண்டும் என்றால் செயல்பாடு உள்ளே, 77 00:03:44,555 --> 00:03:46,430 அதற்கு பதிலாக வெறும் கொண்ட அது குறிப்பாக, இயக்க 78 00:03:46,430 --> 00:03:50,004 நீங்கள் பிரச்சனை என்று நினைத்தால் உள்ளே அந்த செயல்பாடு அடங்கக் கூடும் 79 00:03:50,004 --> 00:03:52,670 நீங்கள், நிச்சயமாக, ஒரு இடைவெளி அமைக்க முடியும் உள்ளே அந்த செயல்பாடு சுட்டிக்காட்டுகின்றனர். 80 00:03:52,670 --> 00:03:57,820 நீங்கள் ஏற்கனவே இயங்கும் என்றால் அல்லது, நீங்கள் குறியீடு முன்னோக்கி ஒரு வரி விலக கள் பயன்படுத்த. 81 00:03:57,820 --> 00:04:01,170 >> எனவே இந்த நடவடிக்கை எடுக்கும் மற்றும் செயல்பாடுகளை முழுக்கு, 82 00:04:01,170 --> 00:04:04,750 அதற்கு பதிலாக வெறும் இயக்க வேண்டும் மற்றும் செயல்பாடு மீது தொடர்ந்து 83 00:04:04,750 --> 00:04:07,380 நீங்கள் பிழைதிருத்தம் இருக்கிறோம் என்று. 84 00:04:07,380 --> 00:04:09,870 நீங்கள் எப்போதும் தெரிந்து கொள்ள வேண்டும் என்றால் ஒரு மாறி மதிப்பு, 85 00:04:09,870 --> 00:04:12,507 நீங்கள் ப, அல்லது அச்சு தட்டச்சு செய்யலாம், பின்னர் மாறி பெயர். 86 00:04:12,507 --> 00:04:15,090 என்று நீங்கள் வெளியே அச்சிடும் GDB, சூழல் உள்ளே, 87 00:04:15,090 --> 00:04:19,110 மாறி பெயரை, என்று உங்களால் me-- மாறி மதிப்பு சாக்குப்போக்கு 88 00:04:19,110 --> 00:04:20,064 நீங்கள் என்ற என்று. 89 00:04:20,064 --> 00:04:23,230 நீங்கள் ஒவ்வொரு மதிப்புகளை தெரிந்து கொள்ள வேண்டும் என்றால் அங்கு இருந்து உள்ளூர் மாறி அணுக 90 00:04:23,230 --> 00:04:25,970 நீங்கள் தற்போது உங்கள் நிரல், நீங்கள் தகவல் உள்ளூர் தட்டச்சு செய்யலாம். 91 00:04:25,970 --> 00:04:28,332 அது மிகவும் வேகமாக விட தான் பின்னர் p தட்டச்சு மற்றும் என்ன, 92 00:04:28,332 --> 00:04:30,540 ஆல் அவுட் பட்டியல் நீ இல்லை என்று தெரியும் என்று மாறிகள். 93 00:04:30,540 --> 00:04:34,370 நீங்கள் தகவல் உள்ளூர் தட்டச்சு, மற்றும் அது முடியும் நீங்கள் எல்லாம் வெளியே அச்சிட வேண்டும். 94 00:04:34,370 --> 00:04:37,770 அடுத்த வரை இது, பிடி ஆகிறது மீண்டும் டிரேஸ் குறுகிய. 95 00:04:37,770 --> 00:04:41,680 இப்போது, பொதுவாக, குறிப்பாக ஆரம்ப CS50, 96 00:04:41,680 --> 00:04:44,450 நீங்கள் உண்மையில் நேரத்தில் வேண்டும் பிடி, அல்லது மீண்டும் டிரேஸ் பயன்படுத்த, 97 00:04:44,450 --> 00:04:47,860 நீங்கள் செயல்பாடுகளை கொண்ட இல்லை, ஏனெனில் என்று மற்ற செயல்பாடுகள் அழைக்க. 98 00:04:47,860 --> 00:04:50,450 >> நீங்கள் முக்கிய அழைப்பு ஒரு வேண்டும் செயல்பாடு, ஆனால் அந்த ஒருவேளை அது தான். 99 00:04:50,450 --> 00:04:53,199 நீங்கள் மற்ற செயல்பாடு இல்லை மற்றொரு செயல்பாடு, அழைப்பு இது 100 00:04:53,199 --> 00:04:54,880 மற்றொரு செயல்பாடு அழைப்பு, மற்றும் பல. 101 00:04:54,880 --> 00:04:57,550 ஆனால் உங்கள் திட்டங்கள் இன்னும் கிடைக்கும் என சிக்கலான, மற்றும் குறிப்பாக 102 00:04:57,550 --> 00:05:00,290 நீங்கள் வேலை தொடங்கும் போது மறுநிகழ்வு கொண்டு, மீண்டும் சுவடு 103 00:05:00,290 --> 00:05:05,150 நீங்கள் அனுமதிக்க ஒரு மிகவும் பயனுள்ள வழி இருக்க முடியும் வகையான எங்கே சில சூழல் கிடைக்கும் 104 00:05:05,150 --> 00:05:06,460 நான் என் திட்டத்தில் இருக்கிறேன். 105 00:05:06,460 --> 00:05:10,590 எனவே நீங்கள் உங்கள் குறியீடு எழுதி நான் சொல்கிறேன், மற்றும் நீங்கள் முக்கிய அழைப்புகளை ஒரு செயல்பாடு தெரிகிறீர்கள் 106 00:05:10,590 --> 00:05:14,720 அழைப்புகளை ஒரு செயல்பாடு F, ஒரு சார்பு h அழைக்கும் கிராம்,. 107 00:05:14,720 --> 00:05:17,650 எனவே நாம் பல அடுக்குகளை வேண்டும் காணப்படுகிறது இங்கே நடக்கிறது. 108 00:05:17,650 --> 00:05:19,440 >> நீங்கள் உள்ளே என்றால் உங்கள் GDB, சூழல், 109 00:05:19,440 --> 00:05:21,640 நீங்கள் உங்கள் உள்ளே தெரிகிறீர்கள் ம, ஆனால் நீங்கள் மறக்க 110 00:05:21,640 --> 00:05:27,210 நீங்கள் எங்கே நீ என்ன பற்றி நீங்கள் பிடி, அல்லது மீண்டும் சுவடு தட்டச்சு செய்யலாம் மாறி, 111 00:05:27,210 --> 00:05:32,370 அது, மணி, கிராம் செல்லும் பிரதான அச்சு f வேறு சில தகவல்கள், இணைந்து இது 112 00:05:32,370 --> 00:05:35,984 நீங்கள் ஒரு துப்பு கொடுக்கிறது சரி என்று முக்கிய என்று ஊ, என்று கிராம், F, G, H என்று 113 00:05:35,984 --> 00:05:37,900 என்று எங்கே நான் தற்போது என் திட்டத்தில் இருக்கிறேன். 114 00:05:37,900 --> 00:05:41,380 எனவே, மிகவும் பயனுள்ளதாக இருக்க முடியும் குறிப்பாக, GDB ரகசிய நெஸ் என 115 00:05:41,380 --> 00:05:45,667 , ஒரு சிறிய பெரும் ஆகிறது விஷயங்கள் உள்ளன சரியாக எங்கே கண்டுபிடிக்க. 116 00:05:45,667 --> 00:05:48,500 இறுதியாக, உங்கள் திட்டம் செய்யப்படுகிறது போது, நீங்கள் முடித்துவிட்டீர்கள் போது அல்லது அதை பிழைத்திருத்தம் 117 00:05:48,500 --> 00:05:50,125 நீங்கள் விலகி நடவடிக்கை வேண்டும் GDB, சூழலில் இருந்து, 118 00:05:50,125 --> 00:05:51,940 அது வெளியே பெற எப்படி தெரியும் உதவுகிறது. 119 00:05:51,940 --> 00:05:55,500 நீங்கள் குவிண்டால் தட்டச்சு, அல்லது வெளியே, வெள்ளையனே வெளியேறு முடியும். 120 00:05:55,500 --> 00:05:59,220 இப்போது, இன்றைய வீடியோ முன் நான் ஒரு தரமற்ற திட்டம் தயார் 121 00:05:59,220 --> 00:06:03,900 நான் தொகுக்கப்பட்ட எனப்படும் ஐ buggy1, buggy1.c என அழைக்கப்படும் ஒரு கோப்பு இருந்து. 122 00:06:03,900 --> 00:06:06,500 நீங்கள், இந்த எதிர்பார்க்க முடியும் என திட்டம் உண்மையில் தரமற்ற உள்ளது. 123 00:06:06,500 --> 00:06:08,990 ஏதாவது தவறு நடந்தால் போது நான் முயற்சி மற்றும் அதை இயக்க. 124 00:06:08,990 --> 00:06:13,014 இப்போது, துரதிருஷ்டவசமாக, நான் கவனக்குறைவாக என் buggy1.c கோப்பு நீக்கப்பட்டது 125 00:06:13,014 --> 00:06:15,930 அதனால் வரிசையில் என்னை கண்டுபிடிக்க என்ன, இந்த திட்டத்தின் தவறு நடக்கிறது 126 00:06:15,930 --> 00:06:18,770 நான் பயன்படுத்த வேண்டும் போகிறேன் GDB, வகையான கண்மூடித்தனமாக, முயற்சி 127 00:06:18,770 --> 00:06:22,372 இந்த திட்டத்தை தொடர தவறான நடக்கிறது என்பதை கண்டுபிடிக்க. 128 00:06:22,372 --> 00:06:24,580 ஆனால் வெறும் கருவிகளை பயன்படுத்தி நாம் ஏற்கனவே பற்றி கற்று 129 00:06:24,580 --> 00:06:27,700 நாம் அழகாக கண்டுபிடிக்க முடியும் அதை சரியாக என்ன அவுட். 130 00:06:27,700 --> 00:06:30,740 எனவே மீது தலைமை அனுமதிக்க , CS50 IDE மற்றும் பாருங்கள். 131 00:06:30,740 --> 00:06:33,155 சரி, நாம் இங்கே இருக்கிறோம் என் , CS50 உள்ள IDE சூழல், 132 00:06:33,155 --> 00:06:35,697 நான் சிறிது பெரிதாக்க வேண்டும் எனவே நீங்கள் இன்னும் கொஞ்சம் பார்க்க முடியும். 133 00:06:35,697 --> 00:06:38,530 என் முனைய சாளரத்தில், நான் பட்டியலிட என்றால், என் தற்போதைய இயக்குனரும் உள்ளடக்கங்களை 134 00:06:38,530 --> 00:06:41,250 LS கொண்டு, நாம் அந்த நான் பார்க்கிறேன் மூல கோப்புகளை ஒரு ஜோடி வேண்டும் 135 00:06:41,250 --> 00:06:44,982 இங்கே, உட்பட முன்பு ஐ buggy1 விவாதிக்கப்பட்டது. 136 00:06:44,982 --> 00:06:46,940 என்ன சரியாக போது செல்கிறது நான் முயற்சி மற்றும் ஐ buggy1 ரன். 137 00:06:46,940 --> 00:06:47,773 சரி தான் கண்டுபிடிக்க வேண்டும். 138 00:06:47,773 --> 00:06:52,510 நான், டாட் தட்டச்சு தரமற்ற, மற்றும் நான் Enter அடிக்க. 139 00:06:52,510 --> 00:06:53,670 >> பிரிவு தவறுகளை. 140 00:06:53,670 --> 00:06:55,000 அது நல்லதல்ல. 141 00:06:55,000 --> 00:06:57,180 நீங்கள் நினைவு என்றால், ஒரு அடுக்கு தவறு பொதுவாக 142 00:06:57,180 --> 00:07:01,540 நாம் நினைவு அணுக போது ஏற்படுகிறது நாங்கள் தொட அனுமதி இல்லை என்று. 143 00:07:01,540 --> 00:07:03,820 நாம் எப்படியாவது அடைந்துவிட்டீர்கள் எல்லைக்கு வெளியே 144 00:07:03,820 --> 00:07:05,995 என்ன திட்டம், ஒடுக்கி, நமக்குத் தந்துள்ளான். 145 00:07:05,995 --> 00:07:08,310 மற்றும் எனவே ஏற்கனவே என்று ஒரு துப்பு மாற்றங்கள் வைக்க 146 00:07:08,310 --> 00:07:10,660 நாங்கள் பிழைதிருத்தம் செயல்பாடு தொடங்கும் என. 147 00:07:10,660 --> 00:07:13,620 ஏதோ இங்கே ஒரு சிறிய தவறு ஏற்பட்டுள்ளது. 148 00:07:13,620 --> 00:07:15,935 >> சரி, எனவே நாம் தொடக்கத்தில் GDB, சுற்றுச்சூழலை 149 00:07:15,935 --> 00:07:19,030 நாம் கண்டுபிடிக்க முடியும் என்றால் பார்க்க சரியாக என்ன பிரச்சனை. 150 00:07:19,030 --> 00:07:21,674 நான், என் திரை அழிக்க போகிறேன் நான் GDB தட்டச்சு செய்ய போகிறேன் 151 00:07:21,674 --> 00:07:24,340 மீண்டும், GDB சூழலுக்கு நுழைய, மற்றும் திட்டத்தின் பெயர் 152 00:07:24,340 --> 00:07:27,450 நான் ஐ buggy1 debug வேண்டும் என்று. 153 00:07:27,450 --> 00:07:30,182 நாம் படித்து, ஒரு சிறிய செய்தி கிடைக்கும் ஐ buggy1 அடையாளங்களிலிருந்தும், செய்யப்படுகிறது. 154 00:07:30,182 --> 00:07:32,390 அதாவது அனைத்து அதை இழுத்து ஆகிறது ஒன்றாக குறியீடு அனைத்து, 155 00:07:32,390 --> 00:07:35,570 இப்போது அது ஒரு ஏற்றப்பட்டதும் GDB,, அது போக தயாராக இருக்கிறது. 156 00:07:35,570 --> 00:07:37,140 >> இப்போது, நான் என்ன செய்ய வேண்டும்? 157 00:07:37,140 --> 00:07:39,130 நீங்கள் என்ன நினைவு முதல் படி பொதுவாக உள்ளது 158 00:07:39,130 --> 00:07:42,540 நான் இந்த சூழலில் உள்ளே இருக்கிறேன் பிறகு? 159 00:07:42,540 --> 00:07:44,540 வட்டம், நீங்கள் அமைக்க ஒரு பிரேக் பாயிண்ட், ஏனெனில் 160 00:07:44,540 --> 00:07:46,240 உண்மையில் நான் செய்ய விரும்புகிறேன். 161 00:07:46,240 --> 00:07:47,990 இப்போது, நான் இல்லை இந்த மூல குறியீடு 162 00:07:47,990 --> 00:07:50,948 எனக்கு முன்னால், இது அநேகமாக உள்ளது வழக்கமான பயன்பாடு வழக்கு, மூலம். 163 00:07:50,948 --> 00:07:52,055 ஒருவேளை நீங்கள் செய்யும். 164 00:07:52,055 --> 00:07:52,680 எனவே நல்லது. 165 00:07:52,680 --> 00:07:55,790 ஆனால் அனுமானித்து இல்லை, என்ன தான் செய்ய உங்களுக்கு தெரியும் என்று ஒரு செயல்பாடு 166 00:07:55,790 --> 00:07:58,880 ஒவ்வொரு சி நிரல் உள்ளது? 167 00:07:58,880 --> 00:08:04,420 என்பதை பெரிய விஷயம் இல்லை அல்லது எப்படி சிக்கலான அது, இந்த செயல்பாடு நிச்சயமாக உள்ளது. 168 00:08:04,420 --> 00:08:05,440 முக்கிய, சரியான? 169 00:08:05,440 --> 00:08:08,870 >> எனவே வேறு, நாம் தோல்வி முக்கிய ஒரு பிரேக் பாயிண்ட் அமைக்க. 170 00:08:08,870 --> 00:08:12,200 மீண்டும், நான் தட்டச்சு செய்ய முடியும் அதற்கு பதிலாக ப, முக்கிய உடைத்து. 171 00:08:12,200 --> 00:08:14,650 நீங்கள், ஆர்வம் என்றால் நீங்கள் எப்போதும் ஒரு நீண்ட கட்டளையை தட்டச்சு 172 00:08:14,650 --> 00:08:16,800 பின்னர் நீங்கள் அந்த உணர தவறான விஷயம் தட்டச்சு, 173 00:08:16,800 --> 00:08:18,770 நீங்கள் பெற வேண்டும் அனைத்து நான் செய்தது போல், 174 00:08:18,770 --> 00:08:22,029 நீங்கள் இது நான், கட்டுப்பாடு யூ எடுக்க முடியும் எல்லாம் நீக்க மற்றும் நீங்கள் மீண்டும் கொண்டு வர 175 00:08:22,029 --> 00:08:23,570 கர்சர் வரிகளை தொடக்கத்தில். 176 00:08:23,570 --> 00:08:26,569 கீழே நடத்த விட வேகமாக நிறைய நீக்க, அல்லது அது ஒரு கொத்து முறை தாக்கியதால் 177 00:08:26,569 --> 00:08:27,080 மேல். 178 00:08:27,080 --> 00:08:28,740 >> எனவே நாம் முக்கிய ஒரு பிரேக் பாயிண்ட் அமைக்க வேண்டும். 179 00:08:28,740 --> 00:08:32,970 நீங்கள் பார்க்க முடியும் என, அது நாம் நான் கூறுகிறது கோப்பு buggy1.c ஒரு பிரேக் பாயிண்ட் அமைக்க, 180 00:08:32,970 --> 00:08:36,330 மற்றும் வெளிப்படையாக முதல் வரி முக்கிய குறியீடு வரி ஏழு ஆகும். 181 00:08:36,330 --> 00:08:38,080 மீண்டும், நாம் இல்லை இங்கே மூல கோப்பு, 182 00:08:38,080 --> 00:08:40,429 ஆனால் நான் அதை என்று கொள்வோம் என்னை உண்மையை சொல்கிறேன். 183 00:08:40,429 --> 00:08:44,510 பின்னர், நான் முயற்சி செய்கிறேன் மற்றும் r, நிரலை. 184 00:08:44,510 --> 00:08:45,360 திட்டத்தை தொடங்கி. 185 00:08:45,360 --> 00:08:48,160 சரி, இந்த செய்தியை ஒரு சிறிய ரகசிய உள்ளது. 186 00:08:48,160 --> 00:08:50,160 ஆனால் அடிப்படையில் என்ன இங்கே என்ன நடக்கிறது, அது தான் ஆகிறது 187 00:08:50,160 --> 00:08:53,350 நான் என் இடைவெளி ஹிட் தான், என்னை சொல்லி புள்ளி, பிரேக் பாயிண்ட் எண் 1. 188 00:08:53,350 --> 00:08:55,877 >> பின்னர், குறியீடு என்று வரி, எந்த கோப்பு அல்லது அடைவு. 189 00:08:55,877 --> 00:08:57,710 மட்டும் காரணம் நான் அந்த செய்தியை பார்த்து 190 00:08:57,710 --> 00:09:00,800 ஆகிறது நான் கவனக்குறைவாக ஏனெனில் என் buggy.c கோப்பு நீக்கப்பட்டது. 191 00:09:00,800 --> 00:09:04,050 என் buggy1.c கோப்பு எதுவும் இல்லை என்றால் தற்போதைய அடைவில் 192 00:09:04,050 --> 00:09:06,920 அங்கு உண்மையில் நடத்தவிருப்பதாக வரி எனக்கு சொல்ல என்ன குறியீடு வரி 193 00:09:06,920 --> 00:09:08,214 உண்மையில் கூறுகிறது. 194 00:09:08,214 --> 00:09:09,380 துரதிருஷ்டவசமாக, நான் அது நீக்கப்பட்டது. 195 00:09:09,380 --> 00:09:14,790 நாம் வகையான செல்லவும் வேண்டும் போகிறோம் மேலும் கண்மூடித்தனமாக இந்த ஒரு சிறிய மூலம். 196 00:09:14,790 --> 00:09:17,330 >> சரி, அதனால் நாம் பார்ப்போம், என்ன நான் இங்கு என்ன செய்ய வேண்டும்? 197 00:09:17,330 --> 00:09:21,770 சரி, நான் உள்ளூர் என்ன அறிய விரும்புகிறேன் மாறிகள் ஒருவேளை என்னை கிடைக்கும். 198 00:09:21,770 --> 00:09:23,570 நான் என் திட்டத்தை தொடங்கியது. 199 00:09:23,570 --> 00:09:28,515 தான் இருக்க என்ன என்று பார்ப்போம் ஏற்கனவே எங்களுக்கு துவக்கப்படும். 200 00:09:28,515 --> 00:09:31,430 நான் தகவல் உள்ளூர், எந்த உள்ளூர் தட்டச்சு. 201 00:09:31,430 --> 00:09:33,960 சரி, இல்லை, அதனால் என்னை தகவல்களை ஒரு டன் கொடுக்க. 202 00:09:33,960 --> 00:09:37,600 நான் முயற்சி மற்றும் மாறி அவுட் அச்சிட முடியும், ஆனால் நான் எந்த மாறி பெயர்கள் தெரியாது. 203 00:09:37,600 --> 00:09:39,930 நான் மீண்டும் சுவடு முயற்சிக்க முடியும், ஆனால் நான் முக்கிய உள்ளே இருக்கிறேன், 204 00:09:39,930 --> 00:09:43,710 அதனால் நான் செய்யவில்லை தெரிகிறேன் இப்போது மற்றொரு செயல்பாடு அழைப்பு. 205 00:09:43,710 --> 00:09:47,710 >> என் மட்டுமே விருப்பங்கள் போன்ற எனவே தெரிகிறது n அல்லது அதனால் பயன்படுத்த மற்றும் முழுக்கு தொடங்க வேண்டும். 206 00:09:47,710 --> 00:09:49,630 நான் n பயன்படுத்த போகிறேன். 207 00:09:49,630 --> 00:09:51,180 அதனால் நான் N தட்டச்சு செய்யவும். 208 00:09:51,180 --> 00:09:53,060 ஐயோ என் ஓ, என்ன நடக்கிறது இங்கே. 209 00:09:53,060 --> 00:09:56,260 திட்டம் சமிக்ஞைகளை பெற்றது, SIGSEGV அடுக்கு தவறு, 210 00:09:56,260 --> 00:09:57,880 பின்னர் ஒரு முழு பொருட்களை கொத்து. 211 00:09:57,880 --> 00:09:58,880 நான் ஏற்கனவே அதிகமாக இருக்கிறேன். 212 00:09:58,880 --> 00:10:00,980 சரி, உண்மையில் அங்கு ஒரு இங்கே நிறைய அறிய வேண்டியுள்ளது. 213 00:10:00,980 --> 00:10:02,520 அதனால் என்ன இந்த சொல்கிறது? 214 00:10:02,520 --> 00:10:09,180 அது என்ன நமக்கு சொல்கிறது இந்த திட்டம், ஆகிறது பற்றி, ஆனால் உள்ளது இன்னும், நொடி தவறு. 215 00:10:09,180 --> 00:10:12,550 குறிப்பாக, நான் போகிறேன் மேலும் கூட இங்கே பெரிதாக்க, 216 00:10:12,550 --> 00:10:18,980 அதை பற்றி நொடி தவறு பற்றி ஏதாவது str ஒப்பீட்டு என்று. 217 00:10:18,980 --> 00:10:22,705 >> இப்போது, நாம் விவாதித்த விரிவாக இந்த செயல்பாடு. 218 00:10:22,705 --> 00:10:25,580 நாங்கள் போவதில்லை ஏனெனில் ஆனால் அது ஆகிறது ஒவ்வொரு செயல்பாடு பற்றி பேச என்று 219 00:10:25,580 --> 00:10:28,610 சி நிலையான உள்ளது நூலகம் ஆனால் அவர்கள் நீங்கள் இருக்கும் அனைத்து இருக்கிறார்கள் 220 00:10:28,610 --> 00:10:32,110 நீங்கள் ஒரு எடுக்கிறீர்கள், குறிப்பாக reference.cs50.net பாருங்கள். 221 00:10:32,110 --> 00:10:35,000 மேலும் என்றால் strcmp மிகவும் சக்தி வாய்ந்த உள்ளே உள்ளது அந்த செயல்பாடு 222 00:10:35,000 --> 00:10:38,070 string.h, தலைப்பு ஒரு தலைப்பு இது கோப்பு, 223 00:10:38,070 --> 00:10:41,970 செயல்பாடுகளை அர்ப்பணிக்கப்பட்ட என்று கோப்பு என்று வேலை மற்றும் சரங்களை கையாள. 224 00:10:41,970 --> 00:10:49,830 >> குறிப்பாக, என்ன என்றால் strcmp செய்வதில்லை.இருவரும் அது இரண்டு சரங்களை மதிப்புகள் ஒப்பிட்டு. 225 00:10:49,830 --> 00:10:54,160 நான் தவறு துண்டாக்கல் பற்றி நான் ஒரு அழைப்பு அது தெரிகிறது strcmp வேண்டும். 226 00:10:54,160 --> 00:10:58,530 , நான் ஹிட் n, மற்றும் உண்மையில் நான் செய்தி கிடைக்கும் திட்டம் சிக்னல் SIGSEGV கொண்டு நிறுத்தப்பட்டது 227 00:10:58,530 --> 00:11:01,370 அடுக்கு தவறு. எனவே இப்போது நான் உண்மையில் நொடி கைவிடப்பட்டது, 228 00:11:01,370 --> 00:11:06,479 என் திட்டத்தை அழகான உள்ளது மிகவும் திறம்பட இழந்துவிட்டீரா. 229 00:11:06,479 --> 00:11:07,770 இந்த திட்டம் இறுதியில் உள்ளது. 230 00:11:07,770 --> 00:11:10,370 அதை இடித்து, அது செயலிழந்தது. 231 00:11:10,370 --> 00:11:14,740 எனவே நிறைய இருந்தது, ஆனால் நான் உண்மையில் மிகவும் ஒரு பிட் கற்றுக்கொண்டாய் 232 00:11:14,740 --> 00:11:16,747 இந்த சிறிய அனுபவத்தில் இருந்து. 233 00:11:16,747 --> 00:11:17,580 நான் என்ன கற்றுக்கொண்டீர்கள்? 234 00:11:17,580 --> 00:11:22,020 சரி, என் திட்டத்தை விபத்துக்குள்ளான உடனடியாக அழகான மிகவும். 235 00:11:22,020 --> 00:11:26,300 என் திட்டம் மீது விபத்துக்குள்ளான ஒரு strcmp அழைக்க, ஆனால் நான் 236 00:11:26,300 --> 00:11:30,560 எந்த உள்ளூர் மாறிகள் இல்லை என் அது விபத்துக்குள்ளான அந்த நேரத்தில் திட்டத்தை. 237 00:11:30,560 --> 00:11:37,320 அதனால் என்ன சரம், அல்லது சரங்களை, நான் ஒருவேளை ஒப்பிட்டு இருக்க முடியும். 238 00:11:37,320 --> 00:11:42,140 நான் எந்த உள்ளூர் இல்லை என்றால் மாறிகள், நீங்கள் போகலாம் 239 00:11:42,140 --> 00:11:45,520 ஒருவேளை ஒரு நான் அங்கேயே உன்னுடைய என்று நினை உண்மை இருக்க முடியும் இது, உலக மாறி. 240 00:11:45,520 --> 00:11:47,670 >> ஆனால், பொதுவாக, அது தெரிகிறது நான் ஒப்பிட்டு இருக்கிறேன் 241 00:11:47,670 --> 00:11:52,070 இல்லை என்று ஏதாவது. 242 00:11:52,070 --> 00:11:54,130 எனவே விசாரணை அனுமதிக்க மேலும் ஒரு சிறிய என்று. 243 00:11:54,130 --> 00:11:55,120 எனவே நான் என் திரை அழிக்க போகிறேன். 244 00:11:55,120 --> 00:11:57,536 நான் வெளியே விட்டு போகிறேன் இரண்டாவது, GDB சூழல். 245 00:11:57,536 --> 00:12:01,300 நான் சரி, நினைத்து இருக்கிறேன், அதனால் இருக்கிறது என் திட்டத்தில் எந்த உள்ளூர் மாறிகள். 246 00:12:01,300 --> 00:12:06,444 நான் கடந்து வேண்டிய ஒருவேளை எனக்கு சந்தேகமாக ஒரு கட்டளை வரி வாதம் ஒரு சரம் இல். 247 00:12:06,444 --> 00:12:07,610 எனவே இந்த சோதனை செய்யலாம். 248 00:12:07,610 --> 00:12:09,020 நான் முன்னர் இந்த செய்யவில்லை. 249 00:12:09,020 --> 00:12:14,244 >> நான் இந்த நிரலை இயக்க ஒருவேளை என்றால் நாம் பார்ப்போம் ஒரு கட்டளை வரி வாதம் கொண்ட அது வேலை செய்யும். 250 00:12:14,244 --> 00:12:16,140 ஹும், அங்கு எந்த அடுக்கு தவறு. 251 00:12:16,140 --> 00:12:17,870 இது தான் நான் அதை வெளியே வந்தார் என்று என்னிடம் கூறினார். 252 00:12:17,870 --> 00:12:19,170 எனவே ஒருவேளை திருத்தம் இங்கே தான். 253 00:12:19,170 --> 00:12:27,560 நான் திரும்பி சென்று என்றால் உண்மையில், பாருங்கள் buggy1.c உண்மையான மூல குறியீடு, 254 00:12:27,560 --> 00:12:31,180 நான் செய்து கொண்டிருக்கிறேன் போல தெரிகிறது நான் இல்லாமல் strcmp ஒரு அழைப்பு 255 00:12:31,180 --> 00:12:34,010 உண்மையில் சோதிக்க [1] உள்ளது என்பதை சோதனை. 256 00:12:34,010 --> 00:12:36,730 இந்த உண்மையில் buggy1.c மூல குறியீடு. 257 00:12:36,730 --> 00:12:38,855 எனவே நான் உண்மையில் என்ன தேவை என் திட்டத்தை சரி செய்ய இங்கே செய்ய, 258 00:12:38,855 --> 00:12:40,835 அனுமானித்து, நான் வேண்டும் , எனக்கு முன்னால் உள்ள தாக்கல் 259 00:12:40,835 --> 00:12:44,740 வெறும் செய்ய ஒரு காசோலை சேர்க்க உறுதி என்று argc 2 சமமாக இருக்கும். 260 00:12:44,740 --> 00:12:47,780 எனவே இந்த உதாரணம், மீண்டும் நான், என்றார், போன்ற சரி, ஒரு சிறிய பிட் திட்டமிடப்பட்டது உள்ளது? 261 00:12:47,780 --> 00:12:49,840 நீங்கள் பொதுவாக போவதில்லை தற்செயலாக உங்கள் மூல குறியீடு நீக்க 262 00:12:49,840 --> 00:12:51,820 பின்னர் முயற்சி செய்ய வேண்டும் மற்றும் நிரல் debug. 263 00:12:51,820 --> 00:12:53,120 ஆனால் வட்டம், கொடுத்தார் நீங்கள் ஒரு விளக்கம் 264 00:12:53,120 --> 00:12:55,120 விஷயங்கள் வகையான என்று நீங்கள் என்ன நினைத்துக்கொண்டு 265 00:12:55,120 --> 00:12:56,610 நீங்கள் உங்கள் திட்டம், பிழைத்திருத்தம். 266 00:12:56,610 --> 00:12:58,760 >> இங்கே விவகாரங்களில் அரசு என்ன? 267 00:12:58,760 --> 00:13:00,510 என்ன மாறிகள் நான் செய்கிறது என்னை அணுக வேண்டும்? 268 00:13:00,510 --> 00:13:03,600 எங்கு என் திட்டம், என்ன வரி, நொறுங்கியதில், 269 00:13:03,600 --> 00:13:05,240 என்ன செயல்பாடு என்ன அழைப்பு? 270 00:13:05,240 --> 00:13:06,952 துப்பு என்ன என்று எனக்கு கொடுக்க வேண்டும்? 271 00:13:06,952 --> 00:13:08,910 மற்றும் சரியாக இருக்கிறது மனப்போக்கை வகையான என்று நீங்கள் 272 00:13:08,910 --> 00:13:12,820 நீங்கள் இருக்கும் போது ஏறுவதை உங்கள் பிழைத்திருத்தம் திட்டங்கள் பற்றி நினைத்து. 273 00:13:12,820 --> 00:13:13,820 >> நான் டக் லாயிட் இருக்கிறேன். 274 00:13:13,820 --> 00:13:16,140 இந்த CS50 உள்ளது. 275 00:13:16,140 --> 00:15:08,642