>> டக் LLOYD: சரி, GDB.
அது சரியாக என்ன?
நிற்கும் எனவே GDB, குனு பிழைத்திருத்தி ஐந்து,
உண்மையிலேயே ஒரு அற்புதமான கருவி என்று நாம் ஆகும் எங்கள் திட்டங்களை debug பயன்படுத்துகிறோம்,
அல்லது விஷயங்களை எங்கே கண்டுபிடிக்க எங்கள் திட்டங்கள் தவறு நடக்கிறது.
GDB என அதிசயமாக சக்திவாய்ந்த ஆனால் அது வெளியீடு மற்றும் தொடர்பு
சிறிது புரிந்து இருக்க முடியும்.
இது பொதுவாக ஒரு கட்டளை வரி கருவியாகும், மற்றும் அதை நீங்கள் செய்திகளை நிறைய துரத்த முடியும்.
அது கடுமையாக வகையான முடியும் நடக்கிறது சரியாக என்ன இட.
அதிர்ஷ்டவசமாக, நாங்கள் எடுத்து விட்டேன் படிகள் நீங்கள் இந்த பிரச்சினையை சரி செய்ய
நீங்கள் CS50 மூலம் வேலை என.
வரைகலை பயன்படுத்தி இல்லை என்றால் பிழை திருத்தி, இது என் சக டான்
Armandarse மிகவும் பேசியிருக்கிறார் ஒரு வீடியோ பற்றி ஒரு பிட் என்று
இங்கு இருக்க வேண்டும் இப்போது, நீங்கள் வேண்டும்
இந்த கட்டளை வரி பயன்படுத்த கருவிகள், GDB வேலை.
நீங்கள் CS50 வேலை என்றால் எஸ்டி, நீங்கள் இதை செய்ய தேவையில்லை.
ஆனால் நீங்கள் இல்லை என்றால் , CS50 IDE இல் வேலை,
ஒருவேளை ஒரு பதிப்பு பயன்படுத்தி CS50 அப்ளையன்ஸ் என்ற,
அல்லது வேறு லினக்ஸ் இயக்க GDB கொண்ட அமைப்பு, அதை நிறுவ
நீங்கள் பயன்படுத்த வேண்டும் இந்த கட்டளை வரி கருவிகள்.
>> இருந்து நீங்கள் போகலாம் அது தான், அதை செய்ய வேண்டும்
எப்படி புரிந்து கொள்ள பயனுள்ளதாக GDB, கட்டளை வரியில் இருந்து வேலை.
ஆனால் மீண்டும், நீங்கள் என்றால் , CS50 IDE பயன்படுத்தி, நீங்கள்
வரைகலை வழு பயன்படுத்த முடியும் என்று IDE உடன் கட்டப்பட்டுள்ளது.
எனவே விஷயங்களை நடக்கிறது பெற GDB என பிழைத்திருத்தம் தொடங்க
ஒரு குறிப்பிட்ட செயல்முறை திட்டம், நீங்கள் செய்ய வேண்டும்
GDB, தொடர்ந்து தட்டச்சு நிரல் பெயர் மூலம்.
எனவே எடுத்துக்காட்டாக, உங்கள் திட்டம் என்றால் ஹலோ, நீங்கள் GDB ஹலோ தட்டச்சு வேண்டும்.
>> நீங்கள் செய்யும் போது, நீங்கள் போகிறீர்கள் GDB, சுற்றுச்சூழலை இழுக்க.
உங்கள் வரி மாற்ற, மற்றும் இருப்பதற்கு பதிலாக வழக்கமாக என்ன அது
நீங்கள் விஷயங்களை தட்டச்சு செய்யும் போது ஆகிறது கட்டளை வரியில் கள் மணிக்கு,
உங்கள் வழக்கமான அனைத்து குறுவட்டு லினக்ஸ், உங்கள் வரியில் கட்டளையிடுகிறது
, ஒருவேளை, ஏதாவது மாறும் அடைப்புக்குறிக்குள் போன்ற, GDB அடைப்புக்குறிக்குள்.
ஏனென்றால், உங்கள் புதிய GDB வரியில் தான் நீங்கள் GDB சூழல் உள்ளே இருக்கிறோம்.
ஒருமுறை அந்த சூழலில் உள்ளே, இரண்டு முக்கிய கட்டளைகளை இருக்கிறது
ஒருவேளை நீங்கள் பயன்படுத்த வேண்டும் என்று பின்வரும் வரிசையில்.
>> முதல் ஆ, இது இடைவெளி குறுகிய உள்ளது.
நீங்கள் ஆ, நீங்கள் பொதுவாக தட்டச்சு பிறகு ஒரு விழா என்ற பெயரில் தட்டச்சு,
அல்லது நீங்கள் தெரியும் நடக்கும் என்ன வரி எண்ணிக்கை சுமார்
உங்கள் திட்டத்தை தொடங்கி ஒரு சிறிய வித்தியாசமாக நடந்து,
நீங்கள் ஒரு வரி தட்டச்சு செய்யலாம் அங்கு பல அதே.
என்ன B, அல்லது இடைவெளி, இல்லை அது உங்கள் நிரல் அனுமதிக்கிறது
ஒரு சில புள்ளி வரை இயக்க, செயல்பாடு அதாவது, பெயர்
நீங்கள் குறிப்பிடும் அல்லது வரி என்று நீங்கள் குறிப்பிடும் அந்த எண்.
>> அந்த கட்டத்தில், அது மரணதண்டனை உறைந்துவிடும்.
இது ஏனெனில், ஒரு நல்ல விஷயம் மரணதண்டனை உறைந்துள்ள முறை,
மிகவும் மெதுவாக தொடங்க முடியும் உங்கள் திட்டத்தின் மூலம் நடவடிக்கை.
நீங்கள் தான் என்றால் பொதுவாக, இயங்கும் உங்கள் திட்டங்கள், அவர்கள் அழகாக குறுகிய இருக்கிறோம்.
பொதுவாக, நீங்கள் டாட் தட்டச்சு என்ன உங்கள் திட்டத்தின் பெயர், வெற்றி உள்ளிடவும்
மற்றும் நீங்கள் மிளிரும் முடியும் முன், உங்கள் திட்டம் ஏற்கனவே முடிந்துவிட்டது.
அது உண்மையில் முயற்சி நிறைய நேரம் இல்லை மற்றும் தவறு என்ன நடக்கிறது கண்டுபிடிக்க.
அது உண்மையில் விஷயங்களை மெதுவாக முடியும் எனவே கீழே ஆ ஒரு பிரேக் பாயிண்ட் அமைக்க,
பின்னர் நுழைவதை.
>> நீங்கள் உங்கள் முறித்து அமைக்க பின்னர் முறை புள்ளி நீங்கள் நிரலை இயக்க முடியும்.
நீங்கள் எந்த இருந்தால் கட்டளை வரி வாதங்கள்,
நீங்கள் இங்கே குறிப்பிட போது நீங்கள் உங்கள் நிரல் பெயர், GDB தட்டச்சு செய்யவும்.
நீங்கள் அனைத்து கட்டளை வரி குறிப்பிட R, அல்லது ரன் எடுத்து வாதங்கள்,
, பின்னர் அதை கட்டளை வரி அளவுருக்களை நீங்கள் உங்கள் திட்டம் உள்ளே வேண்டும்.
மற்ற பல உண்மையில் உள்ளன முக்கியமான மற்றும் பயனுள்ள கட்டளைகளை
மொத்த உள்நாட்டு சூழலில் உள்ளே.
அதனால் தான் விரைவில் என்னை அனுமதிக்க இன்னும் சில மேல் போக.
>> முதல், அடுத்த குறுகிய உள்ளது எந்த n, ஆகிறது நீங்கள், அடுத்த பதிலாக N தட்டச்சு செய்யலாம்
இருவரும் வேலை செய்யும்.
அது தான் சுருக்கெழுத்து தான்.
ஒருவேளை நீங்கள் ஏற்கனவே வந்திருக்கிறேன் என விஷயங்களை தட்டச்சு முடியும், பயன்படுத்தப்படும்
குறுகிய பொதுவாக நல்லது.
என்ன செய்வேன், அதை ஆகும் குறியீடு முன்னோக்கி ஒரு தொகுதி நடவடிக்கை.
எனவே அது முன்னோக்கி செல்ல வேண்டும் ஒரு சார்பு அழைப்பு வரை.
பின்னர் பதிலாக அந்த விழாவில் டைவிங்
மற்றும் என்று செயல்பாடுகளை அனைத்து வழியாக சென்று குறியீடு, அது வெறும் செயல்பாடு வேண்டும்.
>> செயல்பாடு என அழைக்கப்படும்.
அதன் வேலைகள் செய்வோம்.
அது ஒரு மதிப்பு திரும்ப வேண்டும் என்ற அந்த செயல்பாடு.
பின்னர் நீங்கள் செல்ல வேண்டும் என்று அழைப்பு செயல்பாடு அடுத்த வரி.
நீங்கள் நடவடிக்கை வேண்டும் என்றால் செயல்பாடு உள்ளே,
அதற்கு பதிலாக வெறும் கொண்ட அது குறிப்பாக, இயக்க
நீங்கள் பிரச்சனை என்று நினைத்தால் உள்ளே அந்த செயல்பாடு அடங்கக் கூடும்
நீங்கள், நிச்சயமாக, ஒரு இடைவெளி அமைக்க முடியும் உள்ளே அந்த செயல்பாடு சுட்டிக்காட்டுகின்றனர்.
நீங்கள் ஏற்கனவே இயங்கும் என்றால் அல்லது, நீங்கள் குறியீடு முன்னோக்கி ஒரு வரி விலக கள் பயன்படுத்த.
>> எனவே இந்த நடவடிக்கை எடுக்கும் மற்றும் செயல்பாடுகளை முழுக்கு,
அதற்கு பதிலாக வெறும் இயக்க வேண்டும் மற்றும் செயல்பாடு மீது தொடர்ந்து
நீங்கள் பிழைதிருத்தம் இருக்கிறோம் என்று.
நீங்கள் எப்போதும் தெரிந்து கொள்ள வேண்டும் என்றால் ஒரு மாறி மதிப்பு,
நீங்கள் ப, அல்லது அச்சு தட்டச்சு செய்யலாம், பின்னர் மாறி பெயர்.
என்று நீங்கள் வெளியே அச்சிடும் GDB, சூழல் உள்ளே,
மாறி பெயரை, என்று உங்களால் me-- மாறி மதிப்பு சாக்குப்போக்கு
நீங்கள் என்ற என்று.
நீங்கள் ஒவ்வொரு மதிப்புகளை தெரிந்து கொள்ள வேண்டும் என்றால் அங்கு இருந்து உள்ளூர் மாறி அணுக
நீங்கள் தற்போது உங்கள் நிரல், நீங்கள் தகவல் உள்ளூர் தட்டச்சு செய்யலாம்.
அது மிகவும் வேகமாக விட தான் பின்னர் p தட்டச்சு மற்றும் என்ன,
ஆல் அவுட் பட்டியல் நீ இல்லை என்று தெரியும் என்று மாறிகள்.
நீங்கள் தகவல் உள்ளூர் தட்டச்சு, மற்றும் அது முடியும் நீங்கள் எல்லாம் வெளியே அச்சிட வேண்டும்.
அடுத்த வரை இது, பிடி ஆகிறது மீண்டும் டிரேஸ் குறுகிய.
இப்போது, பொதுவாக, குறிப்பாக ஆரம்ப CS50,
நீங்கள் உண்மையில் நேரத்தில் வேண்டும் பிடி, அல்லது மீண்டும் டிரேஸ் பயன்படுத்த,
நீங்கள் செயல்பாடுகளை கொண்ட இல்லை, ஏனெனில் என்று மற்ற செயல்பாடுகள் அழைக்க.
>> நீங்கள் முக்கிய அழைப்பு ஒரு வேண்டும் செயல்பாடு, ஆனால் அந்த ஒருவேளை அது தான்.
நீங்கள் மற்ற செயல்பாடு இல்லை மற்றொரு செயல்பாடு, அழைப்பு இது
மற்றொரு செயல்பாடு அழைப்பு, மற்றும் பல.
ஆனால் உங்கள் திட்டங்கள் இன்னும் கிடைக்கும் என சிக்கலான, மற்றும் குறிப்பாக
நீங்கள் வேலை தொடங்கும் போது மறுநிகழ்வு கொண்டு, மீண்டும் சுவடு
நீங்கள் அனுமதிக்க ஒரு மிகவும் பயனுள்ள வழி இருக்க முடியும் வகையான எங்கே சில சூழல் கிடைக்கும்
நான் என் திட்டத்தில் இருக்கிறேன்.
எனவே நீங்கள் உங்கள் குறியீடு எழுதி நான் சொல்கிறேன், மற்றும் நீங்கள் முக்கிய அழைப்புகளை ஒரு செயல்பாடு தெரிகிறீர்கள்
அழைப்புகளை ஒரு செயல்பாடு F, ஒரு சார்பு h அழைக்கும் கிராம்,.
எனவே நாம் பல அடுக்குகளை வேண்டும் காணப்படுகிறது இங்கே நடக்கிறது.
>> நீங்கள் உள்ளே என்றால் உங்கள் GDB, சூழல்,
நீங்கள் உங்கள் உள்ளே தெரிகிறீர்கள் ம, ஆனால் நீங்கள் மறக்க
நீங்கள் எங்கே நீ என்ன பற்றி நீங்கள் பிடி, அல்லது மீண்டும் சுவடு தட்டச்சு செய்யலாம் மாறி,
அது, மணி, கிராம் செல்லும் பிரதான அச்சு f வேறு சில தகவல்கள், இணைந்து இது
நீங்கள் ஒரு துப்பு கொடுக்கிறது சரி என்று முக்கிய என்று ஊ, என்று கிராம், F, G, H என்று
என்று எங்கே நான் தற்போது என் திட்டத்தில் இருக்கிறேன்.
எனவே, மிகவும் பயனுள்ளதாக இருக்க முடியும் குறிப்பாக, GDB ரகசிய நெஸ் என
, ஒரு சிறிய பெரும் ஆகிறது விஷயங்கள் உள்ளன சரியாக எங்கே கண்டுபிடிக்க.
இறுதியாக, உங்கள் திட்டம் செய்யப்படுகிறது போது, நீங்கள் முடித்துவிட்டீர்கள் போது அல்லது அதை பிழைத்திருத்தம்
நீங்கள் விலகி நடவடிக்கை வேண்டும் GDB, சூழலில் இருந்து,
அது வெளியே பெற எப்படி தெரியும் உதவுகிறது.
நீங்கள் குவிண்டால் தட்டச்சு, அல்லது வெளியே, வெள்ளையனே வெளியேறு முடியும்.
இப்போது, இன்றைய வீடியோ முன் நான் ஒரு தரமற்ற திட்டம் தயார்
நான் தொகுக்கப்பட்ட எனப்படும் ஐ buggy1, buggy1.c என அழைக்கப்படும் ஒரு கோப்பு இருந்து.
நீங்கள், இந்த எதிர்பார்க்க முடியும் என திட்டம் உண்மையில் தரமற்ற உள்ளது.
ஏதாவது தவறு நடந்தால் போது நான் முயற்சி மற்றும் அதை இயக்க.
இப்போது, துரதிருஷ்டவசமாக, நான் கவனக்குறைவாக என் buggy1.c கோப்பு நீக்கப்பட்டது
அதனால் வரிசையில் என்னை கண்டுபிடிக்க என்ன, இந்த திட்டத்தின் தவறு நடக்கிறது
நான் பயன்படுத்த வேண்டும் போகிறேன் GDB, வகையான கண்மூடித்தனமாக, முயற்சி
இந்த திட்டத்தை தொடர தவறான நடக்கிறது என்பதை கண்டுபிடிக்க.
ஆனால் வெறும் கருவிகளை பயன்படுத்தி நாம் ஏற்கனவே பற்றி கற்று
நாம் அழகாக கண்டுபிடிக்க முடியும் அதை சரியாக என்ன அவுட்.
எனவே மீது தலைமை அனுமதிக்க , CS50 IDE மற்றும் பாருங்கள்.
சரி, நாம் இங்கே இருக்கிறோம் என் , CS50 உள்ள IDE சூழல்,
நான் சிறிது பெரிதாக்க வேண்டும் எனவே நீங்கள் இன்னும் கொஞ்சம் பார்க்க முடியும்.
என் முனைய சாளரத்தில், நான் பட்டியலிட என்றால், என் தற்போதைய இயக்குனரும் உள்ளடக்கங்களை
LS கொண்டு, நாம் அந்த நான் பார்க்கிறேன் மூல கோப்புகளை ஒரு ஜோடி வேண்டும்
இங்கே, உட்பட முன்பு ஐ buggy1 விவாதிக்கப்பட்டது.
என்ன சரியாக போது செல்கிறது நான் முயற்சி மற்றும் ஐ buggy1 ரன்.
சரி தான் கண்டுபிடிக்க வேண்டும்.
நான், டாட் தட்டச்சு தரமற்ற, மற்றும் நான் Enter அடிக்க.
>> பிரிவு தவறுகளை.
அது நல்லதல்ல.
நீங்கள் நினைவு என்றால், ஒரு அடுக்கு தவறு பொதுவாக
நாம் நினைவு அணுக போது ஏற்படுகிறது நாங்கள் தொட அனுமதி இல்லை என்று.
நாம் எப்படியாவது அடைந்துவிட்டீர்கள் எல்லைக்கு வெளியே
என்ன திட்டம், ஒடுக்கி, நமக்குத் தந்துள்ளான்.
மற்றும் எனவே ஏற்கனவே என்று ஒரு துப்பு மாற்றங்கள் வைக்க
நாங்கள் பிழைதிருத்தம் செயல்பாடு தொடங்கும் என.
ஏதோ இங்கே ஒரு சிறிய தவறு ஏற்பட்டுள்ளது.
>> சரி, எனவே நாம் தொடக்கத்தில் GDB, சுற்றுச்சூழலை
நாம் கண்டுபிடிக்க முடியும் என்றால் பார்க்க சரியாக என்ன பிரச்சனை.
நான், என் திரை அழிக்க போகிறேன் நான் GDB தட்டச்சு செய்ய போகிறேன்
மீண்டும், GDB சூழலுக்கு நுழைய, மற்றும் திட்டத்தின் பெயர்
நான் ஐ buggy1 debug வேண்டும் என்று.
நாம் படித்து, ஒரு சிறிய செய்தி கிடைக்கும் ஐ buggy1 அடையாளங்களிலிருந்தும், செய்யப்படுகிறது.
அதாவது அனைத்து அதை இழுத்து ஆகிறது ஒன்றாக குறியீடு அனைத்து,
இப்போது அது ஒரு ஏற்றப்பட்டதும் GDB,, அது போக தயாராக இருக்கிறது.
>> இப்போது, நான் என்ன செய்ய வேண்டும்?
நீங்கள் என்ன நினைவு முதல் படி பொதுவாக உள்ளது
நான் இந்த சூழலில் உள்ளே இருக்கிறேன் பிறகு?
வட்டம், நீங்கள் அமைக்க ஒரு பிரேக் பாயிண்ட், ஏனெனில்
உண்மையில் நான் செய்ய விரும்புகிறேன்.
இப்போது, நான் இல்லை இந்த மூல குறியீடு
எனக்கு முன்னால், இது அநேகமாக உள்ளது வழக்கமான பயன்பாடு வழக்கு, மூலம்.
ஒருவேளை நீங்கள் செய்யும்.
எனவே நல்லது.
ஆனால் அனுமானித்து இல்லை, என்ன தான் செய்ய உங்களுக்கு தெரியும் என்று ஒரு செயல்பாடு
ஒவ்வொரு சி நிரல் உள்ளது?
என்பதை பெரிய விஷயம் இல்லை அல்லது எப்படி சிக்கலான அது, இந்த செயல்பாடு நிச்சயமாக உள்ளது.
முக்கிய, சரியான?
>> எனவே வேறு, நாம் தோல்வி முக்கிய ஒரு பிரேக் பாயிண்ட் அமைக்க.
மீண்டும், நான் தட்டச்சு செய்ய முடியும் அதற்கு பதிலாக ப, முக்கிய உடைத்து.
நீங்கள், ஆர்வம் என்றால் நீங்கள் எப்போதும் ஒரு நீண்ட கட்டளையை தட்டச்சு
பின்னர் நீங்கள் அந்த உணர தவறான விஷயம் தட்டச்சு,
நீங்கள் பெற வேண்டும் அனைத்து நான் செய்தது போல்,
நீங்கள் இது நான், கட்டுப்பாடு யூ எடுக்க முடியும் எல்லாம் நீக்க மற்றும் நீங்கள் மீண்டும் கொண்டு வர
கர்சர் வரிகளை தொடக்கத்தில்.
கீழே நடத்த விட வேகமாக நிறைய நீக்க, அல்லது அது ஒரு கொத்து முறை தாக்கியதால்
மேல்.
>> எனவே நாம் முக்கிய ஒரு பிரேக் பாயிண்ட் அமைக்க வேண்டும்.
நீங்கள் பார்க்க முடியும் என, அது நாம் நான் கூறுகிறது கோப்பு buggy1.c ஒரு பிரேக் பாயிண்ட் அமைக்க,
மற்றும் வெளிப்படையாக முதல் வரி முக்கிய குறியீடு வரி ஏழு ஆகும்.
மீண்டும், நாம் இல்லை இங்கே மூல கோப்பு,
ஆனால் நான் அதை என்று கொள்வோம் என்னை உண்மையை சொல்கிறேன்.
பின்னர், நான் முயற்சி செய்கிறேன் மற்றும் r, நிரலை.
திட்டத்தை தொடங்கி.
சரி, இந்த செய்தியை ஒரு சிறிய ரகசிய உள்ளது.
ஆனால் அடிப்படையில் என்ன இங்கே என்ன நடக்கிறது, அது தான் ஆகிறது
நான் என் இடைவெளி ஹிட் தான், என்னை சொல்லி புள்ளி, பிரேக் பாயிண்ட் எண் 1.
>> பின்னர், குறியீடு என்று வரி, எந்த கோப்பு அல்லது அடைவு.
மட்டும் காரணம் நான் அந்த செய்தியை பார்த்து
ஆகிறது நான் கவனக்குறைவாக ஏனெனில் என் buggy.c கோப்பு நீக்கப்பட்டது.
என் buggy1.c கோப்பு எதுவும் இல்லை என்றால் தற்போதைய அடைவில்
அங்கு உண்மையில் நடத்தவிருப்பதாக வரி எனக்கு சொல்ல என்ன குறியீடு வரி
உண்மையில் கூறுகிறது.
துரதிருஷ்டவசமாக, நான் அது நீக்கப்பட்டது.
நாம் வகையான செல்லவும் வேண்டும் போகிறோம் மேலும் கண்மூடித்தனமாக இந்த ஒரு சிறிய மூலம்.
>> சரி, அதனால் நாம் பார்ப்போம், என்ன நான் இங்கு என்ன செய்ய வேண்டும்?
சரி, நான் உள்ளூர் என்ன அறிய விரும்புகிறேன் மாறிகள் ஒருவேளை என்னை கிடைக்கும்.
நான் என் திட்டத்தை தொடங்கியது.
தான் இருக்க என்ன என்று பார்ப்போம் ஏற்கனவே எங்களுக்கு துவக்கப்படும்.
நான் தகவல் உள்ளூர், எந்த உள்ளூர் தட்டச்சு.
சரி, இல்லை, அதனால் என்னை தகவல்களை ஒரு டன் கொடுக்க.
நான் முயற்சி மற்றும் மாறி அவுட் அச்சிட முடியும், ஆனால் நான் எந்த மாறி பெயர்கள் தெரியாது.
நான் மீண்டும் சுவடு முயற்சிக்க முடியும், ஆனால் நான் முக்கிய உள்ளே இருக்கிறேன்,
அதனால் நான் செய்யவில்லை தெரிகிறேன் இப்போது மற்றொரு செயல்பாடு அழைப்பு.
>> என் மட்டுமே விருப்பங்கள் போன்ற எனவே தெரிகிறது n அல்லது அதனால் பயன்படுத்த மற்றும் முழுக்கு தொடங்க வேண்டும்.
நான் n பயன்படுத்த போகிறேன்.
அதனால் நான் N தட்டச்சு செய்யவும்.
ஐயோ என் ஓ, என்ன நடக்கிறது இங்கே.
திட்டம் சமிக்ஞைகளை பெற்றது, SIGSEGV அடுக்கு தவறு,
பின்னர் ஒரு முழு பொருட்களை கொத்து.
நான் ஏற்கனவே அதிகமாக இருக்கிறேன்.
சரி, உண்மையில் அங்கு ஒரு இங்கே நிறைய அறிய வேண்டியுள்ளது.
அதனால் என்ன இந்த சொல்கிறது?
அது என்ன நமக்கு சொல்கிறது இந்த திட்டம், ஆகிறது பற்றி, ஆனால் உள்ளது இன்னும், நொடி தவறு.
குறிப்பாக, நான் போகிறேன் மேலும் கூட இங்கே பெரிதாக்க,
அதை பற்றி நொடி தவறு பற்றி ஏதாவது str ஒப்பீட்டு என்று.
>> இப்போது, நாம் விவாதித்த விரிவாக இந்த செயல்பாடு.
நாங்கள் போவதில்லை ஏனெனில் ஆனால் அது ஆகிறது ஒவ்வொரு செயல்பாடு பற்றி பேச என்று
சி நிலையான உள்ளது நூலகம் ஆனால் அவர்கள் நீங்கள் இருக்கும் அனைத்து இருக்கிறார்கள்
நீங்கள் ஒரு எடுக்கிறீர்கள், குறிப்பாக reference.cs50.net பாருங்கள்.
மேலும் என்றால் strcmp மிகவும் சக்தி வாய்ந்த உள்ளே உள்ளது அந்த செயல்பாடு
string.h, தலைப்பு ஒரு தலைப்பு இது கோப்பு,
செயல்பாடுகளை அர்ப்பணிக்கப்பட்ட என்று கோப்பு என்று வேலை மற்றும் சரங்களை கையாள.
>> குறிப்பாக, என்ன என்றால் strcmp செய்வதில்லை.இருவரும் அது இரண்டு சரங்களை மதிப்புகள் ஒப்பிட்டு.
நான் தவறு துண்டாக்கல் பற்றி நான் ஒரு அழைப்பு அது தெரிகிறது strcmp வேண்டும்.
, நான் ஹிட் n, மற்றும் உண்மையில் நான் செய்தி கிடைக்கும் திட்டம் சிக்னல் SIGSEGV கொண்டு நிறுத்தப்பட்டது
அடுக்கு தவறு. எனவே இப்போது நான் உண்மையில் நொடி கைவிடப்பட்டது,
என் திட்டத்தை அழகான உள்ளது மிகவும் திறம்பட இழந்துவிட்டீரா.
இந்த திட்டம் இறுதியில் உள்ளது.
அதை இடித்து, அது செயலிழந்தது.
எனவே நிறைய இருந்தது, ஆனால் நான் உண்மையில் மிகவும் ஒரு பிட் கற்றுக்கொண்டாய்
இந்த சிறிய அனுபவத்தில் இருந்து.
நான் என்ன கற்றுக்கொண்டீர்கள்?
சரி, என் திட்டத்தை விபத்துக்குள்ளான உடனடியாக அழகான மிகவும்.
என் திட்டம் மீது விபத்துக்குள்ளான ஒரு strcmp அழைக்க, ஆனால் நான்
எந்த உள்ளூர் மாறிகள் இல்லை என் அது விபத்துக்குள்ளான அந்த நேரத்தில் திட்டத்தை.
அதனால் என்ன சரம், அல்லது சரங்களை, நான் ஒருவேளை ஒப்பிட்டு இருக்க முடியும்.
நான் எந்த உள்ளூர் இல்லை என்றால் மாறிகள், நீங்கள் போகலாம்
ஒருவேளை ஒரு நான் அங்கேயே உன்னுடைய என்று நினை உண்மை இருக்க முடியும் இது, உலக மாறி.
>> ஆனால், பொதுவாக, அது தெரிகிறது நான் ஒப்பிட்டு இருக்கிறேன்
இல்லை என்று ஏதாவது.
எனவே விசாரணை அனுமதிக்க மேலும் ஒரு சிறிய என்று.
எனவே நான் என் திரை அழிக்க போகிறேன்.
நான் வெளியே விட்டு போகிறேன் இரண்டாவது, GDB சூழல்.
நான் சரி, நினைத்து இருக்கிறேன், அதனால் இருக்கிறது என் திட்டத்தில் எந்த உள்ளூர் மாறிகள்.
நான் கடந்து வேண்டிய ஒருவேளை எனக்கு சந்தேகமாக ஒரு கட்டளை வரி வாதம் ஒரு சரம் இல்.
எனவே இந்த சோதனை செய்யலாம்.
நான் முன்னர் இந்த செய்யவில்லை.
>> நான் இந்த நிரலை இயக்க ஒருவேளை என்றால் நாம் பார்ப்போம் ஒரு கட்டளை வரி வாதம் கொண்ட அது வேலை செய்யும்.
ஹும், அங்கு எந்த அடுக்கு தவறு.
இது தான் நான் அதை வெளியே வந்தார் என்று என்னிடம் கூறினார்.
எனவே ஒருவேளை திருத்தம் இங்கே தான்.
நான் திரும்பி சென்று என்றால் உண்மையில், பாருங்கள் buggy1.c உண்மையான மூல குறியீடு,
நான் செய்து கொண்டிருக்கிறேன் போல தெரிகிறது நான் இல்லாமல் strcmp ஒரு அழைப்பு
உண்மையில் சோதிக்க [1] உள்ளது என்பதை சோதனை.
இந்த உண்மையில் buggy1.c மூல குறியீடு.
எனவே நான் உண்மையில் என்ன தேவை என் திட்டத்தை சரி செய்ய இங்கே செய்ய,
அனுமானித்து, நான் வேண்டும் , எனக்கு முன்னால் உள்ள தாக்கல்
வெறும் செய்ய ஒரு காசோலை சேர்க்க உறுதி என்று argc 2 சமமாக இருக்கும்.
எனவே இந்த உதாரணம், மீண்டும் நான், என்றார், போன்ற சரி, ஒரு சிறிய பிட் திட்டமிடப்பட்டது உள்ளது?
நீங்கள் பொதுவாக போவதில்லை தற்செயலாக உங்கள் மூல குறியீடு நீக்க
பின்னர் முயற்சி செய்ய வேண்டும் மற்றும் நிரல் debug.
ஆனால் வட்டம், கொடுத்தார் நீங்கள் ஒரு விளக்கம்
விஷயங்கள் வகையான என்று நீங்கள் என்ன நினைத்துக்கொண்டு
நீங்கள் உங்கள் திட்டம், பிழைத்திருத்தம்.
>> இங்கே விவகாரங்களில் அரசு என்ன?
என்ன மாறிகள் நான் செய்கிறது என்னை அணுக வேண்டும்?
எங்கு என் திட்டம், என்ன வரி, நொறுங்கியதில்,
என்ன செயல்பாடு என்ன அழைப்பு?
துப்பு என்ன என்று எனக்கு கொடுக்க வேண்டும்?
மற்றும் சரியாக இருக்கிறது மனப்போக்கை வகையான என்று நீங்கள்
நீங்கள் இருக்கும் போது ஏறுவதை உங்கள் பிழைத்திருத்தம் திட்டங்கள் பற்றி நினைத்து.
>> நான் டக் லாயிட் இருக்கிறேன்.
இந்த CS50 உள்ளது.