[? DAN ARMADARAS:?] హాయ్, నేను [ఉన్నాను? డాన్ Armadaras?].
నేడు, మేము చేయబోతున్నామని డీబగ్గింగ్ చూడటం.
మాత్రమే మేము వెళ్తున్నారు కొన్ని పద్ధతులు గురించి మాట్లాడటానికి,
కానీ కూడా మేము చూడండి చూడాలని కొన్ని లక్షణాలను కలిగి
అనుమతించే CS50 IDE లోపల మీరు సులభంగా ఒక కార్యక్రమం డీబగ్.
>> కేవలం ఒక ఉదాహరణ తప్పు చేసే ఏదో
మరియు అది నిజానికి ఏదో మేము ఇప్పటికే ముందు చూసిన కాదు.
ఈ సందర్భంలో, ఈ ఒక సి కార్యక్రమం ఆ, వినియోగదారు నుండి ఒక పూర్ణ అంగీకరిస్తుంది
రెండు ద్వారా విభజిస్తుంది, మరియు అందిస్తుంది తిరిగి యూజర్ అవుట్పుట్.
ఇప్పుడు మేము చూసిన నుండి ముందు ఉపన్యాసాలలో,
మేము ఇది నిజానికి కారణం తెలుస్తుంది భాగాహార లెక్కలను యొక్క నిర్దిష్ట రకాల
బేసి సంఖ్యలు కలిగి ఉన్నప్పుడు.
>> ముఖ్యంగా, మేము కేవలం దూరంగా త్రో చేస్తాము దశాంశ బిందువు తర్వాత ఏదైనా.
ఇప్పుడు, ఈ తెలుసు కేసు నిర్మాణము.
మరియు మేము ఇది అమలు చేస్తే మేము నిర్ధారించండి చేయవచ్చు ఏకం చేయడం ద్వారా మొదటి మా అనుమానాలు,.
ఆపై, అమలు చేసి మరియు ఒక బేసి సంఖ్య ఎంటర్.
>> ఈ కొత్త కాదు.
కానీ ఈ నిజానికి ఒక ఉంది ఒక బగ్ యొక్క ఉదాహరణకు దాన్ని
ఒక పెద్ద కార్యక్రమం లో ఉన్నాయనే ఆ జాడ కష్టం అవుతుంది.
మేము ఏమి సమస్య తెలుసు అయినప్పటికీ విషయ నిజమైన ఆయువుపట్టు ఉంది
గుర్తించడానికి ప్రయత్నిస్తూ ఉండవచ్చు ప్రత్యేకంగా పేరు లోపం ఏర్పడుతుంది,
ఏమి ఆ సమస్యను గుర్తించడంలో , మరియు అప్పుడు అది ఫిక్సింగ్.
కాబట్టి ఒక ఉదాహరణగా ఈ అందించాలి ఏదో కావచ్చు ఏమి
మేము ఇప్పటికే తెలుసు కానీ ఖననం చేసే కోడ్ ఇతర అంశాలు లోపల.
>> కాబట్టి ఈ ఇతర సోర్స్ తెరవడం ఒక ఉదాహరణగా కోడ్ ఫైలు,
ఈ విభజన సమస్య ఇప్పుడు ఒక భారీ కార్యక్రమంలో భాగంగా.
స్టిల్ కొద్దిగా కావచ్చు బిట్ కంట్రైవ్డ్, మరియు మేము
సులభంగా చేయగలరు ముఖ్యంగా, అది గుర్తించడానికి
మేము ఈ చర్చిస్తున్నారు ఉన్నందున.
కానీ మేము ఈ ఆ గుర్తించడానికి చేయవచ్చు సమస్య ఒక పెద్ద స్థాయిలో ఉండవచ్చు.
>> నేను ఇప్పుడు ఈ సంకలనం ఉంటే అది ఒక బేసి సంఖ్య నమోదు అమలు,
మేము ఖచ్చితంగా పొందలేము ఆ చూడగలరు మేము అంచనా ఉండవచ్చు ఆ అవుట్పుట్.
ఈ ప్రత్యేక సందర్భంలో, మేము అనవచ్చు మేము
సంఖ్యల అన్ని లెక్కించడానికి కావలసిన ఒకటి నుండి కొన్ని నిర్దిష్ట సంఖ్యలో.
మరియు మేము ఆ మేము చూడగలరు వివిధ రకాల విషయాలు కలిగి
మేము ఔట్పుట్ చేస్తున్నారు ఇక్కడ ఉంటే, కేవలం, 0 మరియు 1 మేము 5 ఇన్పుట్ అందించినప్పుడు.
>> కాబట్టి మేము ఇప్పటికే తెలుసు ఇక్కడ ఒక సమస్య ఉంది.
కానీ మేము ఖచ్చితంగా తెలియదు పేరు ఈ సమస్యను నిజానికి ఉంది.
మార్గాలు ఇప్పుడు ఒక ఆ మేము ఈ పరిష్కరించడానికి ప్రయత్నించండి
మేము చేసిన విషయం ఇప్పటికే ప్రవేశపెట్టారు.
మేము కేవలం ఒక పెద్ద స్థాయిలో దానిని ఉపయోగించవచ్చు.
>> లైన్ 14 న, మేము కలిగి ఈ printf ఫంక్షన్,
అమెరికా సంయుక్త రాష్ట్ర ప్రింట్ అనుమతిస్తుంది సమాచారం యొక్క వివిధ ముక్కలు.
మరియు ఈ ఏదో అని మీరు మీ కార్యక్రమంలో పరపతి ఉండాలి
వేటి దొరుకుతుందని ప్రయత్నించండి కోడ్ యొక్క వివిధ మార్గాల లో జరుగుతున్న.
కాబట్టి ఈ కాక పోయినప్పటికీ ఫైనల్ అవుట్పుట్ మేము నిజానికి
బయటకు చేయాలనుకోవడం ఈ కార్యక్రమం, మేము ఇప్పటికీ
కొన్ని డీబగ్ కలిగి ఉండవచ్చు ప్రకటనలు పేరు మేము
బయటకు దొరుకుతుందని ప్రయత్నించవచ్చు ఏమి ఖచ్చితంగా మా కోడ్ లోపల జరుగుతున్న.
>> కాబట్టి ఈ సందర్భంలో, నేను రెడీ డీబగ్ ట్యాగ్ తో printf.
ఈ సందర్భంలో, ఈ కేవలం డీబగ్ స్ట్రింగ్
నేను పెట్టటం కాబట్టి అది అవుతుంది ఆ ఉన్నాను నా కోడ్ ఉత్పాదనలో చాలా స్పష్టంగా
అది నేను చూపాలనుకుంటున్న ఉంది.
సంఖ్య ఇక్కడ మరియు అవుట్పుట్ మేము కంప్యూటెడ్ చేసిన.
>> ఈ సందర్భంలో, నేను వాటిని ఖచ్చితంగా తెలుసుకోవాలంటే
ఏమి ముందు జరుగుతున్న మరియు కొన్ని నిర్దిష్ట గణన తర్వాత.
కాబట్టి నేను ముందు ఒక printf ఉపయోగించడానికి ఉండవచ్చు మరియు కోడ్ యొక్క లైనును తర్వాత.
ఈ సందర్భంలో, నేను కూడా అనుకొనుట ఇది కొద్దిగా మరింత స్పష్టమైన చేయడానికి
ముందు డీబగ్ చెప్పి మరియు డీబగ్ తర్వాత
నేను నాకు తికమక లేదు ఒకే విధంగా కనిపించే అనేక పంక్తులు.
>> ఇప్పుడు మేము ఈ మరియు రన్ మళ్ళీ కంపైల్ ఉంటే అది, మళ్ళీ ఐదు వంటి అనేక ఎంటర్
మేము కలిగి చూడగలరు ఇప్పుడు ముందు మరియు తర్వాత అవుట్పుట్
మరియు మేము ఒక స్పష్టమైన చేయలేదు అని కనుగొనేందుకు విభజన లేదా స్పష్టమైన సంఖ్యలో కలిగి
మేము నిజంగా చేయాలనుకుంటున్నారా.
ఇప్పుడు ఈ సందర్భంలో, ఈ నిజంగా ఒక స్పష్టమైన అవుట్పుట్.
ఇది నిజంగా ఒక స్పష్టమైన ఫలితం కాదు మేము ఈ ప్రత్యేక కార్యక్రమం నిష్క్రమించాలని కోరుకుంటున్నారు.
>> మరియు ఈ ఒక, మళ్ళీ, కొద్దిగా కంట్రైవ్డ్.
కానీ, బహుశా, విషయాలను ఉంటుంది స్పెసిఫికేషన్ చెప్పారు ఉంటే మనం చేయగల
మేము ద్వారా ఈ తిరగడానికి కావలసిన 2 మరియు కాబట్టి ఇతర పదాలు లో 1 కలిగి జోడించండి
మేము అప్పుడు మీరే చుట్టూ అనుకుంటున్నారా మేము అనుకొనుట తెలుసు ఉండవచ్చు
ఈ సందర్భంలో, ఆ ప్రత్యేక పనిని.
ఇప్పుడు ఇక్కడ మనం ఉంటుందని తెలుసు మా సగం సంఖ్య 1 జోడించండి చేయగలరు.
>> ఈ మళ్ళీ కంపైల్ చెయ్యండి లెట్ మరియు ఈ నిర్ధారించండి
మేము కావలసిన విధంగా ప్రవర్తించడం.
మేము ఇప్పుడు ముందు ఆ చూడగలరు కలిగి, మేము సంఖ్య 5 కలిగి.
తరువాత, మేము సంఖ్య 3 కలిగి మా వివరణకు ప్రకారం,
మేము చేయాలనుకుంటున్నామని ఏమి ఉంది.
కానీ మేము వద్ద చూస్తే ఇక్కడ అవుట్పుట్, మేము
మేము మరొక కలిగి ఉండవచ్చని చూడండి ఇది పూర్తిగా బగ్,
మేము 0 నుండి మా లెక్కింపు ప్రారంభించిన ఆ.
>> ఇప్పుడు మళ్ళీ, ఈ ఏదో ఉంది మేము గతంలో చూసిన
మరియు మేము చాలా తక్షణమే పరిష్కరించడానికి చేయవచ్చు.
కానీ ఈ సందర్భంలో, మనం కూడా ప్రయోజనం కలిగి
printf ప్రకటన ఉపయోగించి నేరుగా లూప్ యొక్క లోపల
ఖచ్చితంగా పేరు తెలుసు ఆ లోపం జరుగుతోందో.
కాబట్టి printf ప్రకటనలు ఉంటాయి సహాయం చాలా ఉపయోగకరమైన
మీరు ఎక్కడ గుర్తించడానికి, ఖచ్చితంగా మీ సోర్స్ కోడ్ లో,
ఒక నిర్దిష్ట లోపం ఏర్పడుతోంది.
>> మరియు అది తెలుసుకోవటం కూడా ముఖ్యమైన ఆ, మేము కోడ్ రాస్తున్నాం వంటి,
మేము అంచనాలు కలిగి ఉండవచ్చు ఒక ప్రోగ్రామ్ యొక్క స్థితి గురించి.
లేదా మేము అంచనాలు కలిగి ఉండవచ్చు కార్యక్రమం యొక్క భాగం గురించి
నిజానికి సరైన లేదా తప్పు ఉంది తరువాత మేము ఆ కార్యక్రమంలో నిర్మించడానికి
మరియు అది ఒక భాగంగా తయారు క్లిష్టమైన మరియు పెద్ద కార్యక్రమం
మేము కొన్ని కారక గుర్తించారని ఆ నిజానికి బగ్గీ ఉంది.
>> Printf ఉపయోగించి నిజంగా సహాయపడుతుంది తగ్గించండి మరియు గుర్తించడానికి
ఒక ప్రోగ్రామ్ యొక్క ప్రాంతాలు * చేయకపోవచ్చు సరిగ్గా విధంగా ప్రవర్తించే మేము
మా అంచనాలు ఆధారంగా ఆశించడం.
కానీ ఇతర టూల్స్ ఉంది అందుబాటులో అలాగే,
మాకు ఫిగర్ ప్రయత్నించండి అనుమతిస్తుంది ఎక్కడ లోపం సంభవించే బయటకు
మరియు కూడా ప్రత్యేకంగా, ఏమి విషయాలు ప్రోగ్రామ్ యొక్క లోపల సంభవిస్తున్నాయి.
>> కాబట్టి ఉపయోగించి printf చాలా ఉంది ఉపయోగకరమైన ఉన్నప్పుడు మేము కావలసిన
యొక్క నిర్దిష్ట ప్రాంతాల్లో గుర్తించడానికి కొన్ని బగ్ కలిగి ఒక కార్యక్రమం.
కానీ అది కూడా అవుతుంది కాసేపు తర్వాత దుర్భరమైన.
ఈ సందర్భంలో, ఈ ఒక ఉంది సాపేక్షకంగా ఒక సాధారణ ప్రోగ్రామ్ను
కేవలం ఒకటి లేదా రెండు వేరియబుల్స్ తో.
మరియు అది మాకు చాలా సులభం అవుతుంది ఆ వేరియబుల్స్ విలువ ముద్రించాలా
పెద్ద కార్యక్రమం సందర్భంలో.
>> కానీ మేము వేరే ఉండవచ్చు అనేక వేరియబుల్స్ కలిగి కార్యక్రమం.
మరియు అది చాలా కాకపోవచ్చు printf ఉపయోగించడానికి చాలా సులభం
ఏమి జరుగుతుందో విశ్లేషించడానికి ప్రయత్నించండి ఆ వేరియబుల్స్ యొక్క ప్రతి ఒక
ప్రోగ్రామ్ వలె అమలు.
ఉనికిలో ఉన్న ఒక కార్యక్రమం ఉంది ఒక డీబగ్గర్ కార్యక్రమం అని.
ఈ సందర్భంలో, ఒక మేము రెడీ ఉపయోగం, GDB GNU డీబగ్గర్, లేదా
మాకు అంతర్గత తనిఖీ అనుమతిస్తుంది మరింత లో ఒక కార్యక్రమం కార్యక్రమాలపై
వివరణాత్మక మార్గం.
>> మేము నిజంగా అమలు చేయగల కమాండ్ లైన్ నుండి GDB
ఇక్కడ కేవలం GDB మరియు టైప్ చేయడం ద్వారా మేము డీబగ్ కావలసిన ఆదేశం.
ఈ సందర్భంలో, కౌంట్.
ఇప్పుడు ఈ సందర్భంలో, మేము అది చూడగలరు GDB అని ఒక ప్రాంప్ట్ వచ్చాము.
మరియు మేము నిజంగా చెయ్యవచ్చు GDB ఆదేశాలను అమలు
నిజానికి అమలు ప్రారంభించడానికి కార్యక్రమం, కొన్ని పాయింట్లు వద్ద అడ్డుకునేందుకు,
వేరియబుల్స్ పరిశీలించి, వేరియబుల్స్ తనిఖీ చేసే
కార్యక్రమం రాష్ట్రంలో ఉనికిలో ఆ ప్రత్యేక సందర్భంలో,
మరియు అందువలన న మొదలగునవి.
అది మనకు శక్తి చాలా అందిస్తుంది.
>> కానీ ఇది కేవలం కాబట్టి జరుగుతుంది ఆ CS50 కూడా IDE
ఒక GUI లేదా ఒక వినియోగదారు అందిస్తుంది GDB కోసం ఇంటర్ఫేస్ ఆ
మాకు అవసరం లేకుండా దీన్ని అనుమతిస్తుంది లేనే కమాండ్ లైన్ ఇంటర్ఫేస్
లేదా అన్ని వద్ద కూడా.
నేను ఆ యాక్సెస్ చేయవచ్చు విధంగా డీబగ్ బటన్ ఉపయోగించి ఉంది
CS50 IDE యొక్క అగ్రభాగాన.
ఇప్పుడు గతంలో, మేము ఏమి కలిగి చూసిన మేము కమాండ్ ఉపయోగించే ఉంది
లైన్ కంపైల్ ఆపై ఒక ప్రోగ్రామ్ను అమలు చేయడానికి.
>> డీబగ్ బటన్ చేస్తుంది ఆ దశలను రెండు.
కానీ అది కూడా తీసుకొస్తుంది దూరంగా కుడివైపునున్న డీబగ్గర్ టాబ్
మాకు వివిధ తనిఖీ అనుమతిస్తుంది కార్యక్రమం యొక్క లక్షణాలు
గా అమలు.
నేను ఈ డీబగ్ క్లిక్ చేస్తే కేసు దానిని తెస్తుంది
కన్సోల్ లో ఒక కొత్త టాబ్ చాలా దిగువన విండో.
>> మరియు మీరు ఈ ట్యాబ్ను కలిగి చూడగలరు అగ్రభాగాన కొంత సమాచారం.
మరియు మేము ఎక్కువగా ఈ విస్మరించవచ్చు.
కానీ విషయాలు ఒకటి మేము గమనించవచ్చు కావలసిన
ఇది అందిస్తుంది ఉంది అదే విషయం మేము
మేము తయారు అమలు ప్రయత్నించాడు ఉంటే వస్తుందనే టెర్మినల్ విండో లో సి కార్యక్రమం.
>> ఇక్కడ, మేము అది గణగణమని ద్వని చేయు నడుస్తున్న చూడగలరు మరియు అది జెండాలు వివిధ ఉంది,
మరియు అది మా count.c ఫైలు కంపైల్ ఆ సమయంలో ఎంచుకున్న ట్యాబ్ ఉంది
నేను డీబగ్ హిట్.
కాబట్టి ఈ ఎందుకంటే చాలా ఉపయోగకరంగా ఉంది ఇప్పుడు ఈ డీబగ్ బటన్ను ఉపయోగించి,
మేము ఏకకాలంలో అప్పుడు కంపైల్ మరియు చేయవచ్చు ప్రోగ్రామ్ అమలు మేము నిజానికి
అమలు చేయండి.
>> అని జెండాలు ఒకటి ముఖ్యమైన, ఈ సందర్భంలో,
మేము నిజంగా ఉపయోగించి పరిష్కరించగలుగుతున్నాము ఎక్కువ సమయం
కానీ కేవలం కొన్ని చేతి చేశాడు ఊపుతూ [వినబడని], అందులో
ఇక్కడే ఈ ఒకటి.
గణగణమని ద్వని చేయు, అది -ggdb3 చెప్పారు.
ఈ సందర్భంలో, మనం ఏవి గణగణమని ద్వని చేయు చెప్పడం, మా కంపైలర్,
మేము మా కార్యక్రమం కంపైల్ చేయదలిచిన ఉంది.
కానీ కూడా అందుబాటులో ఉన్నాయి మరియు అని చిహ్నం సమాచారం
కంపైలర్ నిజానికి యాక్సెస్ ఉంది కాబట్టి అంతర్లీన సమాచారం చాలా
కార్యక్రమం ఇమిడి.
>> మరింత ప్రత్యేకంగా, సంఖ్య నేను చేసిన కార్యక్రమాలను,
ఆ ఫంక్షన్ల పేర్లు, వేరియబుల్స్ రకాల
ఆ వేరియబుల్స్ మరియు వివిధ అని డీబగ్గర్ సహాయం ఇతర విషయాలు
దాని ఆపరేషన్.
ఇప్పుడు ఏదో ఉంది పేర్కొన్నాయి ముఖ్యం
మేము నడుస్తున్న చర్చిస్తున్నారు చేస్తున్నారు ఈ విధంగా ఒక కార్యక్రమం.
>> ఇది నిజానికి ఉంది గమనించవచ్చు మా కన్సోల్ లో ఒక కొత్త టాబ్ పెరిగాడు
దిగువన.
మేము ఇకపై సంకర్షణ కలిగి నేరుగా టెర్మినల్ విండో తో.
కానీ ఈ కొత్త టాబ్ ఉంది నిజానికి ఒక టెర్మినల్ విండో.
కేవలం అమలు ప్రత్యేకమైన మేము సృష్టించిన ఆ కార్యక్రమం.
>> లో, దిగువన గమనించండి కొన్ని అవుట్పుట్ కలిపి
కంపైలర్ మరియు GDB గణగణమని ద్వని చేయు ద్వారా, మేము ఎక్కువగా విస్మరించవచ్చు ఇది,
ఇది నిజానికి అవుట్పుట్ చూపిస్తుంది చాలా దిగువన మా కార్యక్రమం.
ఇప్పుడు అది గ్రహించడం ముఖ్యం నిజానికి ఈ ఒక విండో
మీరు కనిపిస్తాయి మీ కార్యక్రమాన్ని నుండి అవుట్పుట్
కానీ కూడా ఇన్పుట్ అంగీకరించే ఆ కార్యక్రమం కోసం, అలాగే.
>> సో చెప్పారు నోటీసు ఒక సంఖ్యను ఎంటర్ చెయ్యండి,
ఇది మేము కలిగి అదే అవుట్పుట్ ఉంది ముందు టెర్మినల్ విండో లో వచ్చింది.
కానీ ఇప్పుడు ఈ కొత్త టాబ్ లో చూపిన.
నేను ఇన్పుట్ అనేక చెయ్యవచ్చు.
మరియు అది నిజానికి రెడీ ఫంక్షన్ మేము ఆశించిన విధంగా
మా డీబగ్ చూపిస్తున్న, అవుట్పుట్, బగ్గీ కావచ్చు అవుట్పుట్,
మేము ముందు చూసిన.
మరియు చాలా దిగువన, అది నిజానికి కొన్ని అదనపు అవుట్పుట్ ఉంది
GDP నుండి కేవలం చెప్పి ఈ కార్యక్రమం పూర్తి.
>> ఇప్పుడు మీరు ఈ చూసిన వంటి ద్వారా ప్రత్యేక పరుగుల,
ఇది ముఖ్యంగా కాదు ఉపయోగకరమైన కూడా ఎందుకంటే
మేము కలిగి ఉన్నప్పటికీ డీబగ్గర్ మెను వస్తాయి అప్, ఇది ఇప్పటికీ నడుస్తున్న కార్యక్రమం.
ఏ సమయంలోనూ నిజానికి అది చేసింది మాకు అమలు విరామం
అన్ని తనిఖీ చెయ్యలేరు వేరియబుల్స్ ఇమిడి.
ఏదో ఉంది మేము క్రమంలో చేయాల్సిందల్లా ఆ
మేము కావలసిన గుర్తించడానికి GDB పొందడానికి ప్రోగ్రామ్ అమలు విరామం
మరియు కేవలం అది ముందుకు అనుమతించదు సాధారణంగా మనం ఏ ఇతర కేసులో లాగ.
>> అమలు విరామం చేయడానికి, కొన్ని నిర్దిష్ట లైన్ వద్ద,
మేము ఏమి సృష్టించాలి ఒక బ్రేక్ పాయింట్ అని.
మరియు ఒక బ్రేక్ పాయింట్ చాలా సులభంగా రూపొందించినవారు ఉంటుంది ఈ లో మీ మౌస్ తీసుకొని IDE CS50
మరియు ఎడమ నేరుగా క్లిక్ చేయడం కొన్ని నిర్దిష్ట లైన్ సంఖ్యలో.
నేను అలా ఒకసారి, ఎరుపు బిందువు సూచిస్తుంది, కనిపిస్తుంది
ఆ లైన్ ఇప్పుడు ఒక బ్రేక్ పాయింట్ ఉంది.
>> నేను GDB అమలు ఆ తరువాత సమయం, అది ఆ బ్రేక్ పాయింట్ వద్ద అమలు చేయవు
ఇది కోడ్ యొక్క లైనును చేరుకున్నప్పుడు.
ఇప్పుడు ఈ ఒక ముఖ్యమైన విషయం గ్రహించడం
అది కాదు తప్పనిసరిగా కేసు కోడ్ యొక్క ప్రతి లైన్
నిజానికి అందుబాటులో ఉంది.
నేను ఒక ఫంక్షన్ సృష్టించడానికి ఉంటే ఇక్కడ, ఉదాహరణకు గర్జన f-- కోసం
హలో ఇక్కడ ఒక ప్రింట్ లైన్ world-- నేను ఈ ఫంక్షన్ కాల్ ఎప్పుడూ ఉంటే,
అది సందర్భంలో ఉంటుంది, నేను ఇక్కడ ఒక బ్రేక్ పాయింట్ సెట్ ఉంటే,
విధి అని ఎప్పటికీ.
అందువల్ల, ఈ ప్రత్యేక బ్రేక్ పాయింట్
నిజానికి విరామం ఎప్పటికీ కార్యక్రమం అమలు.
>> కాబట్టి యొక్క నేను సరిగ్గా సృష్టించడానికి అని పిలవబడు కోడ్ కొన్ని లైన్ ఒక బ్రేక్ పాయింట్
వాస్తవానికి అమలు అవుతుంది.
ఇప్పుడు ఈ సందర్భంలో, ఈ ప్రధాన విధి మొదటి పంక్తి.
కనుక ఇది కచ్చితంగా సందర్భంలో ఉంటుంది ఆ, నేను అమలు ప్రారంభం వెంటనే,
మొట్టమొదటి చేరుకుంది ఉంటుంది.
GDB అమలు విరామం.
ఆపై, నేను చెయ్యగలరు డీబగ్గర్ సంకర్షణ.
>> మీరు బహుళ పంక్తుల సెట్ చేయవచ్చు మీరు కోరుకుంటున్నట్లయితే, బ్రేక్ పాయింట్స్.
మేము కూడా ఒక లైన్ సృష్టించవచ్చు ఇక్కడ కోడ్ ఈ విభాగంలో
ఆ చేరుకున్నారు ఎప్పటికీ.
మరియు మేము కూడా మరింత కింద ఒక సెట్ చేయవచ్చు.
కారణం మనం మేము చేస్తాము దీన్ని చేయాలనుకుంటున్నారా
కొద్దిగా ఎక్కువ వెళ్ళాలని కేవలం ఒక క్షణం లో వివరాలు.
కాబట్టి ఇప్పుడు కోసం, నాకు కేవలం డిసేబుల్ వీలు ఈ అదనపు బ్రేక్ పాయింట్లను
మేము ఏమి వద్ద చూడండి తద్వారా నేను ఒక్క విరామం ఉన్నప్పుడు
నా కార్యక్రమంలో పాయింట్.
నేను చేసిన కొన్ని ఈ కార్యక్రమానికి మార్పులు.
నేను దాన్ని సేవ్ చేయాలి.
నేను డీబగ్ క్లిక్ కనిపిస్తుంది అందువలన నేను సంగ్రహం ప్రారంభం ఆపై
డీబగ్గర్ అమలు.
>> మేము చూస్తారు, ఆ క్షణాలు తర్వాత మేము బ్రేక్ ఎంచుకున్న లైన్
పాయింట్ పసుపు హైలైట్ ఉంది.
మేము కూడా గమనించవచ్చు డీబగ్ ప్యానెల్లో ఎగువ కుడి
విరామం చిహ్నం మారిన ఒక చిన్న నాటకం విగ్రహంగా.
ఈ మేము విరామం ఉంటుంది అర్థం మరణశిక్ష, ఈ ప్రత్యేక సందర్భంలో.
మరియు ప్లే బటన్ ఉంటుంది నొక్కిన మాకు అమలు ప్రారంభించడానికి అనుమతించాలి
నిర్దిష్ట సమయంలో.
>> ఇతర జంట అక్కడ గమనించండి ఈ డీబగ్ పానెల్ లో అందుబాటులో బటన్లు,
అలాగే.
నాకు అనుమతిస్తుంది, అతిక్రమించి కోడ్ యొక్క ఒక లైన్ అమలు
మరియు ఆ రేఖను అతిక్రమించి ఈ విషయంలో తదుపరి ఒకటి, ఇది,
printf అని అర్థం ప్రకటన అమలు.
మరియు అది విరామం కాబట్టి వంటి లైన్ 13 అమలు.
>> మరియు కూడా ఒక అడుగు ఉంది ఫంక్షన్ ఇది
నేను ఇతర సృష్టించారు ఉపయోగకరంగా ఉంది మరెక్కడా సోర్స్ కోడ్ లో విధులు.
నేను చేయడానికి కావలసిన ఆ విధులు కాకుండా
మొత్తం ఆ ఫంక్షన్ అమలు.
కానీ మేము అడుగు వద్ద మరింత పరిశీలిస్తాము కేవలం ఒక క్షణం లో ఫంక్షన్.
ఇప్పుడు కొన్ని ఇతర విషయాలు గమనించవచ్చు నిజానికి ఈ డీబగ్ ప్యానెల్ చోటుచేసుకుంది.
>> మేము ఈ ప్యానెల్ అంటారు ఇది మాకు చూపిస్తుంది, స్టాక్ కాల్
ఖచ్చితంగా మేము ఎక్కడ.
ఈ సందర్భంలో, మేము లోపల ఉంటాయి ప్రధాన విధి.
మా స్క్రిప్ట్ count.c అంటారు.
మరియు మేము కావడం లైన్ 13, కాలమ్ ఒకటి, ఇది
ఏమి హైలైట్ ప్రాంతంలో ఖచ్చితంగా సోర్స్ కోడ్ యొక్క అలాగే సూచిస్తుంది.
>> ఇప్పుడు ఈ కూడా చూపే గమనించవచ్చు స్థానిక వేరియబుల్ విభాగం కింద
వేరియబుల్స్ యొక్క అన్ని ఆ ఈ ఫంక్షన్ చోటుచేసుకుంది.
ఇది గమనించండి ముఖ్యం వేరియబుల్స్ యొక్క అన్ని ఆ
ఈ స్థానిక వేరియబుల్ కనిపిస్తుంది ఒక ఫంక్షన్ లోపల విభాగం,
కూడా వారు నిర్వచించబడ్డాయి ముందు.
మేము ఒక వేరియబుల్ కలిగి ఇక్కడ చూడగలరు అని num, 0 డిఫాల్ట్ విలువ ఉంది,
మరియు అది రకం Int ఉంటుంది.
>> ఇప్పుడు మేము నిజంగా ప్రారంభించడం ముందు ఈ చరరాశులు యొక్క అన్ని,
మేము తప్పనిసరిగా తెలియకపోతే 0 విలువ చూడటానికి హామీ.
మరియు ఇతర మరణశిక్షలు ఆధారపడి మీరు చేసిన ఆ
మరియు మీ మెమరీ ఉన్నప్పుడు రాష్ట్రంలో మీరు నిజంగా ఈ ప్రోగ్రామ్ రన్,
మీరు ఆ కలిగించే 0 విలువలను చూడండి లేదు
కొనసాగి, బదులుగా కొన్ని ఇతర క్రేజీ సంఖ్యలు.
>> కానీ ఆ గురించి ఆందోళన లేదు.
ఇది వరకు సంబంధిత ఉండాలి మాత్రం కాదు మీరు నిజంగా విలువ ప్రారంభించడం.
ఇప్పుడు ఈ సందర్భంలో, మనం చూడగలరు నేను కొన్ని ఉద్గాతాలు పాడేవారు.
మరియు నేను, ప్రస్తుతం అమలు పాజ్ చేస్తున్నాను.
కానీ ఈ సందర్భంలో, ఏమి నేను నిజంగా చేయాలనుకుంటున్నారా
ఇప్పుడు ఈ అతిక్రమించి ఉంది కోడ్ యొక్క నేను నిజానికి ఆ
ఆ పూర్ణాంకానికి యూజర్ ప్రశ్నించే మేము మా కార్యక్రమంలో ఉపయోగించాలనుకుంటున్నాను.
>> ఇప్పుడు ఈ సందర్భంలో, ఉన్నప్పుడు నేను నోటీసు అతిక్రమించి హిట్
ఆ కాకుండా పాజ్ లేదా రెస్యూమ్ బటన్ ఈ పాజ్ బటన్ మార్చబడింది
ఈ కోడ్ వాస్తవానికి అమలు ఎందుకంటే.
ఏం జరుగుతోంది ప్రస్తుతం ఇది అని
ఇన్పుట్ మాకు కొంత సమాచారం వేచి మేము మా అవుట్పుట్ టెక్స్ట్ ద్వారా చూడవచ్చు
చాలా దిగువన.
>> సో ఇప్పుడు, ఈ నిజానికి పాజ్ లేదు,
కూడా అది అయితే, విధమైన కనిపిస్తుంది ఏమీ జరుగుతుందో ఎందుకంటే ఉండాలి.
కానీ ఇది కేవలం కాబట్టి జరుగుతుంది ఆ లైన్ 13 న నా నిర్దిష్ట సందర్భంలో,
నేను వినియోగదారు ఇన్పుట్ కోసం వేచియున్నాను.
కాబట్టి GDB తనిఖీ చెయ్యగలరు కాదు అది ఒక ప్రోగ్రామ్ రన్.
>> నేను కొన్ని ఎంటర్ ఇప్పుడు తదుపరి సమయం ఇన్పుట్గా కాబట్టి నేను ఆ సంఖ్య 5 నమోదు చేస్తారు
మేము చూసిన వంటి హిట్ తిరిగి past--, మరియు మేము
ఆ వెంటనే, GDB అంతరాయాల గమనించవచ్చు మరియు, మళ్ళీ తరువాతి లైన్ హైలైట్.
కానీ ఒక వంటి, ఇప్పుడు గమనించవచ్చు మన విలువ ఇవ్వడం ఫలితంగా,
మేము లోపల ఆ విలువ నవీకరించబడింది మా స్థానిక వేరియబుల్స్ యొక్క ఏ
ఖచ్చితంగా తెలిసిన చాలా ఉపయోగకరంగా ఉంది ఏమి ఆ సంఖ్యను, మెమరీ లో ఉంది.
>> ఇప్పుడు నేను ఈ ప్రోగ్రామ్ కొనసాగడానికి అనుమతిస్తుంది దాని అమలు ముగిసే వరకు ఆడుతున్న
Resume కొట్టడమే.
మేము చాలా త్వరగా చూడగలరు కార్యక్రమం ముగింపు అమలు చేస్తుంది
అదే అవుట్పుట్ ఆ తో మేము ముందు, డీబగ్గర్ ముగుస్తాయి
మరియు ఇప్పుడు ఈ కార్యక్రమం పూర్తిగా ఆగిపోయింది.
>> నేను మాత్రమే చూపించు ఆ చూసిన ప్రయోజనాల ఏమి
మేము నిజానికి Resume కొట్టాడు జరుగుతుంది.
కానీ మేము నిజంగా వెళ్తున్నారు ఈ కార్యక్రమం తిరిగి వెళ్లాలనుకుంటే
మేము డీబగ్ ప్రయత్నించండి విధంగా ఖచ్చితంగా ఏమి జరుగుతుందో.
నేను డీబగ్గర్ ఉపయోగించి వెబ్ ఇప్పుడు, నేను మే ఈ డీబగ్ printf ప్రకటనలు అవసరం లేదు.
>> నేను చేస్తాను నేను వాటిని తొలగించి వేస్తుంది ఇప్పుడు కేవలం మా సరళమైన కోడ్ తిరిగి వెళ్ళడానికి
మేము ఒక క్షణం క్రితం ఉందని.
ఇప్పుడు నేను సేవ్ చేసినప్పుడు కార్యక్రమం మరియు ఇది అమలు
అది, మళ్ళీ, ఆ ప్రారంభ వెళతారు నేను లైన్ 11 న ఉందని పాయింట్ విడిపోయారు.
మరియు నేను తనిఖీ చేయగలరు నా వేరియబుల్స్ నేను చేయాలనుకుంటున్నారా వంటి.
>> ఇది కేవలం కాబట్టి ఈ జరిగితే భాగంగా, చాలా ఆసక్తికరమైన కాదు
మరియు నేను వెళుతున్న తెలుసు ఈ ప్రకటన ముద్రించాలా.
ఒక సంఖ్యను నమోదు చేయండి.
ఆపై, నేను వెళుతున్న తెలుసు ఆ పూర్ణాంక వినియోగదారుని అభ్యర్థించడం.
అందువలన, నేను నిజానికి తరలించాలనుకుంటున్న నా డౌన్ కొద్దిగా మరింత పాయింట్ విడిపోయారు.
>> మీరు బ్రేక్ పాయింట్లను తొలగించవచ్చు నేరుగా, మళ్ళీ, క్లిక్ చేయడం ద్వారా
ఆ లైన్ సంఖ్యలో ఎడమ.
ఆ ఎరుపు బిందువు సూచిస్తూ, కనిపించదు ఆ బ్రేక్ పాయింట్ ఇప్పుడు వెళ్లిపోయిన.
ఇప్పుడు ఈ సందర్భంలో, అమలు పాజ్ చేయబడింది.
మరియు కనుక ఇది నిజానికి మాత్రం కాదు ఆ ప్రత్యేక సందర్భంలో తిరిగి.
కానీ నేను విరామం సెట్ చేయవచ్చు కొద్దిగా తర్వాత అభిప్రాయపడుతున్నారు.
>> మరియు నేను ఇప్పుడు రెస్యూమ్ నా కోడ్, అది తిరిగి మరియు ఇత్సెల్ఫ్
ఆ బ్రేక్ పాయింట్ యొక్క స్థానం.
మళ్ళీ, నేను మళ్ళీ హిట్.
ఏదైనా జరుగుతున్న వంటి కనిపించడం లేదు.
కానీ నా ఎందుకంటే కోడ్ ఇన్పుట్ కోసం వేచి ఉంది.
నేను ఒక సంఖ్య 5 ఎంటర్ ఎంటర్ నొక్కండి, మరియు ఇప్పుడు తదుపరి బ్రేక్ పాయింట్ తగలవచ్చు.
>> ఇప్పుడు ఈ సందర్భంలో, ఈ కోడ్ యొక్క లైన్
ఆ ముందు, మేము తెలుసు బగ్గీ సంభవించింది.
కాబట్టి ఏమి విశ్లేషించడానికి వీలు సమయం లో ఈ నిర్దిష్ట సమయంలో.
ఒక హైలైట్ లైన్ అయినప్పుడు, ఈ రేఖ ఇంకా ఉరితీయబడ్డారు చేయలేదు.
కాబట్టి ఈ సందర్భంలో, మనం చూడగలరు నేను అనేక కలిగి దీనిలో
నేను అనే ఒక పూర్ణాంకం కలిగి ఒక విలువ 5 కలిగి num.
నేను ప్రదర్శన ఉంటుంది వెళుతున్న ఆ సంఖ్య కొంత గణిత.
>> నేను ఆ అతిక్రమించి ఉంటే, మేము num ఆ విలువ నోటీసు
అనుగుణంగా మార్చబడింది మేము నిజానికి చేసిన అంకగణితం.
మరియు ఇప్పుడు మేము అని లోపల లూప్ ఈ
లేదా ఇప్పుడు ఆ లూప్ కూడా హైలైట్ ఉంది,
మేము ఒక కొత్త కలిగి చూడండి వేరియబుల్ నేను అనే
లూప్ ఆ ఉపయోగించవచ్చు అన్నారు.
>> ఇప్పుడు నేను ముందు గుర్తుంచుకోవడానికి కొన్నిసార్లు మీరు ఉన్నాము అని పేర్కొన్నారు
వెర్రి రకమైన చూడటానికి వెళ్లి ఆ సంఖ్యను ముందు డిఫాల్ట్ గా సంఖ్యలు
లేదా ఆ వేరియబుల్ నిజానికి initialized.
మేము ఖచ్చితంగా చూడగలరు ఇక్కడ ఈ వేరియబుల్
లేదు ఇది, నేను అనే ఇంకా initialized
హైలైట్ సమయంలో.
కానీ మేము కొన్ని సంఖ్య ఉంది అని చూడగలరు మేము నిజానికి ఆశించే లేదు అని.
>> పరవాలేదు.
దాని గురించి చింతించకండి మేము నిజానికి ఎందుకంటే
నేను వరకు ఆ సంఖ్యను initialized ఈ రేఖ విలువ అతిక్రమించి
నేను విలువ 1 to initialized ఉంది.
కాబట్టి ఆ నిజానికి ఆ చూడండి కేసు యొక్క అతిక్రమించి తెలియజేయండి.
మేము ఇప్పుడు చూడగలరు లైన్ అమలు చేయబడింది.
మరియు మేము ఇప్పుడు హైలైట్ ఉంటాయి ఈ printf లైన్.
>> మరియు మేము ఇప్పుడు ఎలా మా విలువలు చూడగలరు I మరియు 3 సమయం మారుతూ వస్తున్నాయి.
ఈ నిజానికి, అలా చాలా ఉపయోగకరంగా ఉంటుంది, పదేపదే మార్గాల ద్వారా దశను ఉంది.
మరియు మీరు ఏమి నిజానికి వెదుక్కోవచ్చు మీ కోసం లూప్ యొక్క లోపల జరుగుతుంది
మరియు ఏమి జరుగుతుంది లోపల లూప్ ఆ వేరియబుల్స్
ఆ కార్యక్రమం అమలు వంటి ఒక సమయంలో ఒక అడుగు జరుగుతుంది.
>> ఇప్పుడు ఈ సమయంలో, నేను కేవలం తగినంత పైగా అడుగు
నేను ఇప్పుడు నా ప్రోగ్రామ్ చివరిలో ఉదయం తెలుసుకోండి.
నేను ఆ అతిక్రమించి ఉంటే, అది నిజానికి అమలు కోల్పోవు
మేము గతంలో చూసిన వంటి.
కాబట్టి, నాకు మళ్ళీ, ఈ పునఃప్రారంభించుము లెట్ నేను ఏదో అభిప్రాయపడుతున్నారు చేసే
అలాగే.
>> ఈ సందర్భంలో, అది ఇప్పుడు మళ్ళీ నన్ను అడిగింది,
అనేక కోసం, ఇది నేను మళ్ళీ, ప్రవేశించుటకు.
కానీ ఈ సమయంలో, నేను ఎంటర్ వెళుతున్న పెద్ద సంఖ్యలో కాబట్టి లూప్
ఎక్కువ సార్లు iterate ఉంటుంది.
ఈ సందర్భంలో, నేను వెళుతున్నాను 11 విలువ ఎంటర్.
>> ఇప్పుడు మళ్ళీ నేను సెట్ ఇష్టం ఎందుకంటే లైన్ 15 వద్ద ఒక బ్రేక్ పాయింట్,
ఆ లైన్ హైలైట్ జరగబోతోంది.
మేము ఆ చూడగలరు మా సంఖ్య 11 సరిగ్గా ఉంది
మా స్థానిక వేరియబుల్స్ లో ప్రాతినిధ్యం.
మేము ఇప్పుడు, ఆ ఓవర్ పునాది మా విలువ నేను ఏమి చూడటానికి
మేము ఈ లూప్ యొక్క లోపల కొనసాగండి.
ఇది ప్రతిసారీ మేము చూసారు లూప్ ఆ పైన చేరుకోవడానికి.
>> విషయాలు ఒకటి ఇప్పుడు గనక అమలు సమయంలో చేయాలని ఉపయోగకరంగా
ఈ కార్యక్రమం నిజానికి నాకు ఉంది చూడండి వేరియబుల్స్ మిడ్ స్ట్రీం మార్చడానికి
ఏమి నా ప్రోగ్రామ్ నిర్మాణము.
ఈ సందర్భంలో, నేను నిజానికి చెయ్యవచ్చు రెట్టింపు విలువ క్లిక్ చేయండి.
అది ఒక టెక్స్ట్ రంగంలో అవుతుంది అని గమనించండి.
>> ఇప్పుడు నేను వివిధ నమోదు చేయవచ్చు మొత్తంగా నాణ్యం
నా ప్రోగ్రామ్ ప్రవర్తిస్తుంది ఎలా చూడండి నేను ఆ వేరియబుల్ మార్చారు ఉన్నప్పుడు.
ఇప్పుడు ఈ సందర్భంలో, వేరియబుల్ నేను ఇప్పుడు విలువ 10 కలిగి.
అయితే ప్రోగ్రామ్ ఇప్పటికీ ఉంది అమలు లో పాజ్.
నేను అడుగు చేసినప్పుడు, నేను ఆ చూడండి నేను 10 ఎంటర్ చేసిన విలువ నేను,
, num విలువ కంటే ఎక్కువ కాదు ఇది వెంటనే లూప్ కారణమవుతుంది
నిర్వహణలొ ఆపడానికి.
>> ఇప్పుడు మాత్రమే కాదు కారణం ఎందుకు మీరు చేస్తాను
స్థానంలో వేరియబుల్ సవరించాలని అనుకుంటున్నారా.
మీరు నిజంగా అనుకుంటున్నారా ఉండవచ్చు అది విధంగా సవరించాలని ప్రయత్నించండి
మీరు కొనసాగించవచ్చు ఒక లూప్ అమలు
లేదా తద్వారా మీరు సవరించవచ్చు అది ముందు కొన్ని విలువ
అంకగణితం యొక్క కొన్ని నిర్దిష్ట చేరుతుంది మీరు నిర్వహించడానికి గురించి అని.
>> కాబట్టి ఇప్పుడు మేము నిజానికి మార్చుకోవాలని ప్రోగ్రామ్ వలె నేను విలువ, అమలు జరిగినది
అది లూప్ మానివేశారు కారణమైంది ముందుగానే నేను అకస్మాత్తుగా అన్ని, ఎందుకంటే
విలువ కంటే ఎక్కువ ఉండాలి జరిగింది num యొక్క, లూప్ ఆ అంటే
ఇకపై అమలు చేసేందుకు అవసరమైన.
ఇంకా, ఇది సంభవించింది మేము i యొక్క విలువ మార్చబడింది ఆ సందర్భంలో
లైన్ 17 హైలైట్ చేసినప్పుడు, సమయంలో పాయింట్ ఇది
ఆ లూప్ అమలు కోసం నిజానికి విశ్లేషించబడుతుంది తప్పలేదు.
>> నేను విలువ మారిపోయింది ఉంటే నేను వేరే పంక్తిలో 19 సే
మేము వివిధ చూసిన ప్రవర్తన లైన్ 19 ఎందుకంటే
లూప్ ముందు అమలు చేశాయి పరిస్థితి రివాల్యువేటెడ్ జరిగినది.
ఇప్పుడు ఈ సమయంలో, నేను ఉన్నాను, మళ్ళీ, ఈ కార్యక్రమం చివరిలో.
మరియు నేను ఈ వెళ్లండి అనుమతిస్తుంది నా ప్రోగ్రామ్ సహజంగా విడిచి అనుమతిస్తాయి.
కానీ విషయాలు ఒక జంట ఉంది సర్వులు ముఖ్యం అని
ఈ ప్రత్యేక చర్చ నుండి.
మీరు విశ్లేషించడానికి అవసరం మీ స్వంత అంచనాల
ఎలా కోడ్ ప్రవర్తించడం చేయాలి.
ఏ సమయంలో మీరు కొన్ని ముక్క అని అనుకుంటున్నాను మీకు తెలిసిన కోడ్ పని చేసేట్టు యొక్క,
ఆ వెళ్ళి ఒక ఎరుపు జెండాను కావచ్చు తిరిగి మరియు విశ్లేషించడానికి, మరియు ఖచ్చితంగా ఉంటుంది
మీ ఊహ ఎలా ఆ కోడ్ పనిచేస్తుంటుంది
అది ఎంత వాస్తవానికి నిజం మీ సోర్స్ కోడ్ లో వ్యక్తం చేశారు.
>> కానీ పాయింట్ కూడా ఎక్కువ, మేము డీబగ్గర్ ఉపయోగించి చేసినప్పుడు,
మీరు బ్రేక్ పాయింట్స్ ఉంచవచ్చు కోడ్ యొక్క విభిన్న లైన్లతో,
డీబగ్గర్ కారణం ఇది ఆ రేఖల ప్రతి అమలును విరామం
కాబట్టి మీరు విశ్లేషించవచ్చు మెమరీ లేదా స్థానంలో మార్చవలసి.
మరియు తిరిగి, మీరు గుర్తుంచుకోండి బహుళ బ్రేక్ పాయింట్స్ సృష్టించడానికి తద్వారా మీరు
కూడా అమలు చేసుకోగలుగుతారు, skip కోడ్ యొక్క పెద్ద భాగాలు పైగా,
మరియు అది విరామం స్వయంచాలకంగా ఉంటాం తదుపరి బ్రేక్ పాయింట్ వద్ద.
>> నిజానికి మరింత ఆధునిక ఉన్నాయి డీబగ్గర్ యొక్క లక్షణాలు, అలాగే.
కానీ మేము మీరు సూచించేందుకు ఉంటుంది కొన్ని తర్వాత వీడియోలకు
నిజంగా ఎంత వేరుగా బాధించటం క్రమంలో పర్టికులర్ విధులు ఉపయోగించడానికి.
ఇప్పుడు కోసం, ధన్యవాదాలు చూడటం కోసం చాలా.
మరియు మంచి అదృష్టం డీబగ్గింగ్.