>> డౌ LLOYD: అన్ని కుడి GDB.
అది సరిగ్గా ఏమిటి?
నిలుచునే కాబట్టి GDB, GNU డీబగ్గర్ కోసం,
నిజంగా సంభ్రమాన్నికలిగించే సాధనం మేము చేయవచ్చు మా కార్యక్రమాలు మాకు డీబగ్ సహాయం ఉపయోగించవచ్చు,
లేదా విషయాలు ఇక్కడ తెలుసుకోవచ్చు మా కార్యక్రమాలు తప్పు అన్నారు.
GDB, అద్భుతంగా శక్తివంతమైన ఉంది కానీ దానితో అవుట్పుట్ మరియు పరస్పర
కొద్దిగా గుప్తమైన ఉంటుంది.
ఇది సాధారణంగా ఒక కమాండ్ లైన్ సాధనం, మరియు అది మీరు చాలా సందేశాలను విసిరివేయగలరు.
మరియు అది రకమైన కష్టం చెయ్యవచ్చు జరగబోతోంది వేటి అన్వయించడం.
అదృష్టవశాత్తూ, మేము తీసిన చేసిన దశలను మీరు ఈ సమస్యను పరిష్కరించడానికి
మీరు CS50 ద్వారా పని.
మీరు గ్రాఫికల్ ఉపయోగించి కాకపోతే డీబగ్గర్, నా సహోద్యోగి డాన్
Armandarse చాలా మాట్లాడేవారు ఒక వీడియో లో ఒక బిట్
ఇక్కడ పైగా ఉండాలి ప్రస్తుతం, మీరు అవసరం కావచ్చు
ఈ కమాండ్ లైన్ ఉపయోగించడానికి టూల్స్ GDB తో పని.
మీరు CS50 లో పని చేస్తుంటే, IDE, మీరు దీన్ని అవసరం లేదు.
కానీ మీరు తెలియకపోతే CS50 IDE లో పని,
బహుశా ఒక వెర్షన్ ఉపయోగించి CS50 ఉపకరణం యొక్క,
లేదా మరొక Linux ఆపరేటింగ్ GDB తో సిస్టమ్, అది ఇన్స్టాల్
మీరు ఉపయోగించడానికి అవసరం ఉండవచ్చు ఈ కమాండ్ లైన్ టూల్స్.
>> నుండి మీరు వాటిని అంతే, అలా ఉంటుంది
ఎంత అర్థం ఉపయోగకరమైన GDB కమాండ్ లైన్ నుండి పనిచేస్తుంది.
కానీ మళ్ళీ, మీరు అయితే CS50 IDE ఉపయోగించి, మీరు
గ్రాఫికల్ డీబగ్గర్ ఉపయోగించవచ్చు ఆ IDE లోకి నిర్మించబడింది.
కాబట్టి విషయాలు తో వెళుతున్న పొందుటకు GDB డీబగ్గింగ్ ప్రారంభం
ఒక నిర్దిష్ట ప్రక్రియ కార్యక్రమంలో, మీరు అవసరం
GDB తరువాత టైప్ కార్యక్రమం పేరు ద్వారా.
కాబట్టి ఉదాహరణకు, మీ ప్రోగ్రామ్ అయితే హలో, మీరు GDB హలో టైప్ చేస్తుంది.
>> మీరు అలా చేసినప్పుడు, మీరు వెళుతున్న GDB వాతావరణంలో పుల్ అప్.
మీ సత్వర మార్చడానికి, మరియు బదులుగా సాధారణంగా అది
మీరు విషయాలను టైప్ ఉన్నప్పుడు కమాండ్ లైన్ ls వద్ద,
మీ విలక్షణ అన్ని cd-- Linux, మీ సత్వర ఆదేశాలను
బహుశా, ఏదో మారుతుంది కుండలీకరణాలు వంటి GDB కుండలీకరణాలు.
ఆ ఎందుకంటే, మీ కొత్త GDB ప్రాంప్ట్ మీరు GDB వాతావరణంలో లోపల ఉన్నారు.
ఒకసారి ఆ వాతావరణంలో లోపల, రెండు ప్రధాన కమాండ్లు ఉంది
మీరు బహుశా ఉపయోగిస్తాము కింది క్రమంలో.
>> మొదటి b, ఇది విరామం సంక్షిప్తరూపం.
మరియు మీరు b, మీరు సాధారణంగా టైప్ తర్వాత ఒక చర్య యొక్క పేరును టైప్
లేదా మీకు తెలిసిన జరిగితే ఏ లైన్ సంఖ్య చుట్టూ
మీ కార్యక్రమాన్ని ప్రారంభమైనదని ఒక చిన్న అసహజ ప్రవర్తించేలా
మీరు ఒక లైన్ టైప్ చేయవచ్చు సంఖ్య కూడా అలాగే.
ఏం బి, లేదా విరామం, చేస్తుంది అది మీ ప్రోగ్రామ్ అనుమతిస్తుంది
ఒక నిర్దిష్ట సమయం వరకు అమలు, ఫంక్షన్ అవి, పేరు
మీరు పేర్కొన్న ఆ పంక్తిని మీరు పేర్కొనే సంఖ్య.
>> మరియు ఆ సమయంలో, అది మరణశిక్ష స్తంభింప.
ఈ ఎందుకంటే, ఒక నిజంగా మంచి విషయం మరణశిక్ష స్తంభింప చేసిన తర్వాత,
మీరు చాలా నెమ్మదిగా ప్రారంభమవుతుంది మీ కార్యక్రమం ద్వారా అడుగు.
మీరు పరిష్కరించగలుగుతున్నాము ఉంటే సాధారణంగా, నడుస్తున్న మీ కార్యక్రమాలు, వారు అందంగా చిన్న ఉన్నాము.
సాధారణంగా, మీరు డాట్ స్లాష్ టైప్ ఏ మీ ప్రోగ్రామ్ యొక్క పేరు, ఎంటర్ నొక్కండి ఉంది
మరియు మీరు రెప్పపాటు ముందు, మీ కార్యక్రమం ఇప్పటికే పూర్తి.
ఇది నిజంగా ప్రయత్నించండి సమయం చాలా కాదు మరియు తప్పు ఏమి గుర్తించడానికి.
ఇది నిజంగా విషయాలు నిదానం చెయ్యలేరు కనుక డౌన్ బి తో ఒక బ్రేక్ పాయింట్ అమర్చుట ద్వారా,
ఆపై లో పునాది.
>> మీరు మీ విరామం సెట్ చేసిన తరువాత ఒకసారి పాయింట్, మీరు కార్యక్రమాన్ని అమలు చెయ్యవచ్చు.
మరియు మీరు ఏ ఉంటే కమాండ్ లైన్ వాదనలు,
మీరు ఇక్కడ వాటిని పేర్కొనవచ్చు లేనప్పుడు మీరు మీ కార్యక్రమాన్ని పేరు GDB టైప్ చేయండి.
మీరు అన్ని కమాండ్ లైన్ పేర్కొనండి r, లేదా రన్ తీసుకొని వాదనలు,
ఆపై సంసార ఆదేశ పంక్తి వాదనలు మీరు మీ ప్రోగ్రామ్ యొక్క లోపల అవసరం.
ఇతర అనేక నిజంగా ఉన్నాయి ముఖ్యమైన మరియు ఉపయోగకరమైన ఆదేశాలను
GDP వాతావరణంలో లోపల.
కాబట్టి కేవలం త్వరగా నాకు తెలియజేయండి వాటిలో కొన్ని వెళ్ళి.
>> మొదటి, తరువాతి కోసం చిన్న ఇది n, ఉంది మీరు తదుపరి బదులుగా n టైపు చేయవచ్చు
రెండు పని చేస్తుంది.
మరియు అది కేవలం సంక్షిప్త లిపి ఉంది.
మరియు మీరు బహుశా ఇప్పటికే సంపాదించిన చేసిన విషయాలు టైప్ చేయగలరు ఉండటం, ఉపయోగిస్తారు
తక్కువ సాధారణంగా ఉత్తమం.
అది ఏమి కనిపిస్తుంది చేస్తాము కోడ్ యొక్క ముందుకు ఒక బ్లాక్ అడుగు.
కనుక ఇది ముందుకు చేస్తాము ఒక ఫంక్షన్ కాల్ వరకు.
ఆపై బదులుగా ఆ ఫంక్షన్ లోకి డైవింగ్
మరియు ఆ విధులు అన్ని ద్వారా వెళుతున్న కోడ్, అది కేవలం ఫంక్షన్ ఉంటుంది.
>> ఫంక్షన్ అని ఉంటుంది.
ఇది దాని పని సంసార చేస్తాను.
ఇది క్రింది చేరుకుంటాయి ఇది అని ఆ ఫంక్షన్.
ఆపై మీరు కొనసాగండి చేస్తాము కాల్ ఫంక్షన్ తదుపరి లైన్.
మీరు దశల అనుకుంటే ఫంక్షన్ లోపలి
బదులుగా కేవలం కలిగి అది ముఖ్యంగా, అమలు
మీరు సమస్య అని అనుకుంటే ఆ ఫంక్షన్ యొక్క లోపల ఉంటాయి ఉండవచ్చు,
మీరు, కోర్సు యొక్క, ఒక విరామం సెట్ కాలేదు లోపల ఆ ఫంక్షన్ యొక్క అభిప్రాయపడుతున్నారు.
మీరు ఇప్పటికే అమలు చేస్తున్నారు ఉంటే లేదా, మీరు చెయ్యవచ్చు కోడ్ యొక్క ముందుకు ఒక లైన్ దశను S ఉపయోగించండి.
>> కాబట్టి ఈ దిగవచ్చు మరియు విధులు లోకి డైవ్,
బదులుగా కేవలం అమలు కలిగి మరియు ఫంక్షన్ లో నిరంతరాయ
మీరు డీబగ్గింగ్ కోసం ఉన్నారని ఆ.
మీరు ఎప్పుడైనా తెలుసుకోవాలంటే ఒక వేరియబుల్ విలువ
మీరు p ప్రచురించాలి టైపు చెయ్యవచ్చు ఆపై వేరియబుల్ పేరు.
మరియు ఆ, మీరు ముద్రిస్తుంది GDB పర్యావరణం లోపల,
వేరియబుల్ పేరు, ఆ మీరు చేసిన నాకు వేరియబుల్ విలువ క్షమించు
మీరు అనే చేసిన.
మీరు ప్రతి విలువలను తెలుసుకోవాలనుకుంటే ఎక్కడ నుండి స్థానిక వేరియబుల్ అందుబాటులో
మీరు ప్రస్తుతం మీ కార్యక్రమం మీరు సమాచారం స్థానికులు టైప్ చేయవచ్చు.
ఇది చాలా వేగంగా కంటే వార్తలు అప్పుడు p టైప్ మరియు సంసార,
అన్ని అవ్ట్ జాబితా మీరు ఉనికిలో తెలిసిన వేరియబుల్స్.
మీరు సమాచారం స్థానికులు టైప్, మరియు అది చేయవచ్చు మీరు కోసం ప్రతిదీ అవ్ట్ ముద్రిస్తుంది.
తర్వాత ఇది, బిటి ఉంది తిరిగి ట్రేస్ కోసం చిన్న.
ఇప్పుడు, సాధారణంగా, ప్రత్యేకించి తొలి CS50 లో,
మీరు నిజంగా సందర్భంగా ఉండదు bT, లేదా తిరిగి ట్రేస్ ఉపయోగించడానికి,
మీరు విధులు కలిగి లేదు ఎందుకంటే ఇతర విధులు కాల్.
>> మీరు ప్రధాన కాల్ ఉండవచ్చు ఫంక్షన్, కాని బహుశా అంతే.
మీరు ఇతర ఫంక్షన్ లేదు మరొక ఫంక్షన్ కాల్ ఇది
మరొక ఫంక్షన్ కాల్స్, మరియు అందువలన న.
కానీ మీ ప్రోగ్రామ్లు మరింత పొందుటకు గా క్లిష్టమైన, మరియు ముఖ్యంగా
మీరు పని ప్రారంభమవుతుంది ఉన్నప్పుడు సూత్రం తో, తిరిగి ట్రేస్
మీరు మీకీ ఒక యదార్ధ ఉపయోగకరమైన మార్గంగా ఉంటుంది రకమైన ఎక్కడ కొన్ని సందర్భం పొందండి
నా కార్యక్రమంలో am.
కాబట్టి మీరు మీ కోడ్ వ్రాయలేదు అని, మరియు మీరు ప్రధాన ఒక ఫంక్షన్ కాల్స్ తెలుసు
ఒక ఫంక్షన్ కాల్స్ f, ఒక ఫంక్షన్ H పిలుస్తుంది గ్రా.
కాబట్టి మేము అనేక పొరలు కలిగి గూడు ఇక్కడ జరగబోతోంది.
>> మీరు లోపలి పోతే మీ GDB పర్యావరణం,
మరియు మీరు మీ లోపల తెలుసు h యొక్క, కానీ మీరు మర్చిపోతే
మీరు ఎక్కడ మీరు వచ్చింది ఏమి గురించి మీరు BT లేదా వీపు ట్రేస్ టైప్ చేయవచ్చు are--,
మరియు అది, h, గ్రా బయటకు ప్రధాన f ముద్రిస్తుంది కొన్ని ఇతర సమాచారం, కలిసి ఇది
మీరు ఒక ఆధారాన్ని ఇస్తుంది ఆ, సరే ప్రధాన అని f, అని గ్రా f, g, h అని
మరియు ఆ పేరు నేను ప్రస్తుతం నా కార్యక్రమంలో am.
కనుక ఇది నిజంగా ఉపయోగకరంగా ఉంటుంది ముఖ్యంగా GDB గుప్తమైన నెస్ గా
కు కొద్దిగా అధిక అవుతుంది విషయాలు ఖచ్చితంగా కనుగొనేందుకు.
చివరిగా, మీ ప్రోగాం ఉన్నప్పుడు, మీరు పూర్తి చేసినప్పుడు లేదా డీబగ్గింగ్
మరియు మీరు దూరంగా అడుగు ఇష్టం GDB పర్యావరణం నుంచి,
అది బయటకు ఎలా పొందాలో తెలుసు సహాయపడుతుంది.
మీరు q టైప్ లేదా పొందడానికి, క్విట్ చేయవచ్చు.
ఇప్పుడు, నేటి వీడియో ముందు నేను ఒక బగ్గీ కార్యక్రమం సిద్ధం
నేను సంకలనం ఇది అని buggy1, buggy1.c అని పిలిచే ఒక ఫైలు నుండి.
మీరు ఈ ఆశించిన విధంగా కార్యక్రమం నిజానికి బగ్గీ ఉంది.
ఏదో తప్పు జరిగితే ఉన్నప్పుడు నేను ప్రయత్నించండి మరియు అమలు.
ఇప్పుడు, దురదృష్టవశాత్తు, నేను అనుకోకుండా నా buggy1.c తొలగించారు ఫైలు
అందువలన క్రమంలో నాకు గుర్తించడానికి కోసం ఏమి, ఈ కార్యక్రమం తప్పు జరగబోతోంది
నేను ఉపయోగించడానికి కలిగి వెళుతున్న GDB రకమైన గుడ్డిగా ప్రయత్నిస్తున్న
ఈ కార్యక్రమం ద్వారా నావిగేట్ చెయ్యడానికి తప్పు జరగబోతోంది వేటి దొరుకుతుందని.
కానీ కేవలం టూల్స్ ఉపయోగించి మేము ఇప్పటికే గురించి నేర్చుకున్నాడు చేసిన
మేము చాలా చక్కని దొరుకుతుందని చేయవచ్చు అది వేటి.
కాబట్టి యొక్క కు అధిపతిగా వీలు CS50 IDE మరియు ఒక లుక్ కలిగి.
OK, కాబట్టి మేము ఇక్కడ ఉన్నాము నా CS50 IDE పర్యావరణం,
మరియు నేను కొద్దిగా జూమ్ చేస్తాము కాబట్టి మీరు కొద్దిగా మరింత చూడగలరు.
నా టెర్మినల్ విండో లో, నేను జాబితా నా ప్రస్తుత డైరెక్టర్ యొక్క కంటెంట్లను
ls తో, మేము ఆ నేను చూస్తారు మూలం ఫైళ్ళను జంట కలిగి
ఇక్కడ సహా గతంలో buggy1 చర్చించారు.
వేటి ఉన్నప్పుడు వెళ్తాడు నేను ప్రయత్నించండి మరియు buggy1 అమలు.
Well యొక్క అవ్ట్ కనుగొనండి.
నేను, డాట్ స్లాష్ టైప్ బగ్గీ, మరియు నేను ఎంటర్ కొట్టాడు.
>> విభజన లోపాలుగా.
మంచి కాదు.
మీరు గుర్తు ఉంటే, ఒక విభజన లోపంగా సాధారణంగా
మేము మెమరీ యాక్సెస్ చేసినప్పుడు వచ్చే మేము తాకే అనుమతి చేస్తున్నట్లు.
మేము ఏదో చేరుకున్నారు హద్దులు బయట
ఏ కార్యక్రమం కంపైలర్, మాకు ఇచ్చిన.
కాబట్టి ఇప్పటికే ఆ ఒక క్లూ పేజీలు ఉంచడానికి
మేము డీబగ్గింగ్ ప్రక్రియ ప్రారంభించగానే.
ఏదో ఇక్కడ కొద్దిగా సమస్య ఉంది.
>> All right, కాబట్టి లెట్స్ ప్రారంభం GDB పర్యావరణం
మేము గుర్తించడానికి లేదో మరియు చూడండి వేటి సమస్య.
నేను, నా స్క్రీన్ క్లియర్ వెళుతున్న నేను GDB టైప్ వెళుతున్న
మళ్ళీ, GDB పాలవుతోంది కు, మరియు ప్రోగ్రామ్ యొక్క పేరు
నేను buggy1 డీబగ్ కావలసిన.
మేము చదవడం, ఒక చిన్న సందేశం పొందండి buggy1 నుండి చిహ్నాలు, పూర్తి.
అంటే అన్ని అది విరమించుకుంది ఉంది కలిసి కోడ్ అన్ని,
మరియు ఇప్పుడు అది లోకి లోడ్ చెయ్యబడిన GDB, మరియు అది సిద్ధంగా ఉంది.
>> ఇప్పుడు, నేను ఏమి అనుకుంటున్నారు?
మీరు ఏమి గుర్తు లేదు మొదటి అడుగు సాధారణంగా
నేను ఈ పరిస్థితి యొక్క లోపల ఉన్నాను తర్వాత?
ఆశాజనక, మీరు సెట్ అన్నారు ఒక బ్రేక్ పాయింట్, ఎందుకంటే
నిజానికి నేను చేయాలనుకుంటున్నారా ఏమిటి.
ఇప్పుడు, నేను లేదు ఈ కోసం సోర్స్ కోడ్
నాకు ముందు, ఇది బహుశా ఉంది విలక్షణం ఉపయోగం విషయంలో, మార్గం ద్వారా.
మీరు బహుశా రెడీ.
కాబట్టి ఆ బావుంటుంది.
కానీ ఊహిస్తూ మీరు లేదు ఏమిటి అలా మీరు తెలిసిన ఒక ఫంక్షన్
ప్రతి ఒక్క సి కార్యక్రమం ఉంది?
ఉన్నా ఎంత పెద్ద లేదా ఎంత క్లిష్టమైన ఇది, ఈ ఫంక్షన్ ఖచ్చితంగా ఉంది.
ప్రధాన, కుడి?
>> కాబట్టి మిగతా అన్ని మేము చేయవచ్చు విఫలమైందని ప్రధాన వద్ద ఒక బ్రేక్ పాయింట్ సెట్.
మళ్ళీ, నేను కేవలం పంపుకోవచ్చు బదులుగా బి యొక్క, ప్రధాన విడిపోయారు.
మరియు మీరు, ఆసక్తిగా ఉంటే మీరు ఉంటే ఎప్పుడైనా ఒక దీర్ఘ ఆదేశం టైప్
ఆపై మీరు గుర్తించలేరు తప్పు విషయం టైప్,
మరియు మీరు వదిలించుకోవటం కావలసిన అన్ని నేను చేసిన విధంగా,
మీరు ఇది రెడీ, కంట్రోల్ U పట్టవచ్చు ప్రతిదీ తొలగించండి మరియు మీరు బాగు
కర్సర్ పంక్తులు ప్రారంభానికి.
కేవలం తగ్గేందుకు కంటే చాలా వేగంగా తొలగించండి, లేదా ఒక సమూహం సార్లు కొట్టిన
పైగా.
>> కాబట్టి మేము ప్రధాన వద్ద ఒక బ్రేక్ పాయింట్ సెట్ చేస్తాము.
మరియు మీరు చూడగలరు గా, అది మేము చేసిన చెప్పారు ఫైలు buggy1.c వద్ద ఒక బ్రేక్ పాయింట్ సెట్,
మరియు స్పష్టంగా మొదటి లైన్ ప్రధాన కోడ్ లైన్ ఏడు ఉంది.
మళ్ళీ, మేము లేదు ఇక్కడ సోర్స్ ఫైల్
కానీ నేను అని ఊహించుకోవటం చేస్తాము నన్ను నిజం చెప్పినందుకు.
ఆపై, నేను కేవలం దీనికై మరియు R, కార్యక్రమం అమలు.
కార్యక్రమం మొదలు.
All right, కాబట్టి ఈ సందేశం ఒక చిన్న గుప్తమైన ఉంది.
కానీ ప్రధానంగా ఏమిటి ఇక్కడ జరుగుతున్న అది కేవలం ఉంది
నేను నా విరామం హిట్ చేసిన నాకు చెప్పడం పాయింట్, బ్రేక్ పాయింట్ సంఖ్య 1.
>> ఆపై, కోడ్ యొక్క లైనును అటువంటి ఫైల్ లేదా డైరెక్టరీ లేదు.
మాత్రమే కారణం అని నేను ఆ సందేశం చూసిన వెబ్
నేను అనుకోకుండా ఎందుకంటే నా buggy.c ఫైలు తొలగించారు.
నా buggy1.c ఫైలు ఉనికిలో ఉంటే ప్రస్తుత డైరెక్టరీ,
నిజానికి చేస్తాను ఆ లైన్ కుడి చెప్పు ఏమి కోడ్ లైన్
అక్షరాలా చదువుతుంది.
దురదృష్టవశాత్తు, నేను అది తొలగించబడుతుంది.
మేము రకమైన నావిగేట్ చూడాలని మరింత గుడ్డిగా ఈ కొద్దిగా ద్వారా.
>> OK, కాబట్టి యొక్క చూసేలా, ఏమి నేను ఇక్కడ ఏమి అనుకుంటున్నారు?
Well, నేను స్థానిక ఏమి కోరుకుంటున్నారో వేరియబుల్స్ బహుశా నాకు అందుబాటులో ఉన్నాయి.
నా కార్యక్రమాన్ని ప్రారంభించారు చేసిన.
యొక్క కావచ్చు ఏమి చూద్దాం అప్పటికే మాకు initialized.
నేను సమాచారం స్థానికులు, ఏ స్థానికులు టైప్ చేయండి.
అన్ని కుడి, లేదు కాబట్టి నాకు సమాచారం, ఒక టన్ను ఇస్తాయి.
నేను ప్రయత్నించండి మరియు ఒక వేరియబుల్ ప్రింట్, కానీ నేను ఏ వేరియబుల్ పేర్లు తెలియదు.
నేను బ్యాక్ ట్రేస్ ప్రయత్నించండి, కానీ నేను ప్రధాన లోపలి రెడీ,
కాబట్టి నేను చేసిన తెలుసు ప్రస్తుతం మరొక ఫంక్షన్ కాల్.
>> నా మాత్రమే ఎంపికలు లాగ కాబట్టి కనిపిస్తోంది n లేదా కాబట్టి ఉపయోగించడానికి మరియు డైవ్ ప్రారంభించడానికి.
నేను n ఉపయోగించడానికి వెళుతున్న.
నేను n టైప్ చేయండి.
అబ్బా నా ఓహ్, ఏమి ఇక్కడ జరుగుతోంది.
ప్రోగ్రామ్ సిగ్నల్స్ పొందింది, SIGSEGV, విభజన లోపంగా
ఆపై stuff యొక్క మొత్తం బంచ్.
నేను ఇప్పటికే నిష్ఫలంగా ఉన్నాను.
Well, వాస్తవానికి అక్కడ ఒక చాలా ఇక్కడ నేర్చుకొన్న.
సో వాట్ ఈ మాకు చెప్పడం లేదు?
వాట్ ఇట్ టెల్స్ అస్ ఈ కార్యక్రమం ఉంది గురించి, కానీ ఉంది ఇంకా, seg తప్పు.
మరియు ముఖ్యంగా, నేను వెళుతున్నాను మరింత ఇక్కడ జూమ్,
దాని గురించి seg తప్పు గురించి ఏదో strcmp అని.
>> ఇప్పుడు, మేము చర్చించారు ఉండకపోవచ్చు విస్తృతంగా ఈ ఫంక్షన్.
మేము కావడం లేదు ఎందుకంటే కానీ అది is-- ప్రతి ఫంక్షన్ గురించి మాట్లాడటానికి ఆ
సి ప్రామాణిక లో ఉంది లైబ్రరీ కానీ వారు మీరు అన్ని అందుబాటులో ఉన్నారు
మీరు ఒక పడుతుంది, ముఖ్యంగా reference.cs50.net చూడండి.
మరియు strcmp ఒక నిజంగా శక్తివంతమైన లోపలి ఉందా ఆ ఫంక్షన్
string.h శీర్షిక ఒక శీర్షిక ఇది ఫైల్,
విధులు అంకితం ఫైలు ఆ పని మరియు తీగలను మార్చటానికి.
>> మరియు ముఖ్యంగా, ఏమి strcmp లేవు ఇది రెండు తీగలను విలువలు పోల్చి.
నేను విభజన లోపంగా గురించి ఉన్నాను కాల్ న అది కనిపిస్తుంది strcmp కు.
, నేను n హిట్, మరియు నిజానికి నేను సందేశాన్ని పొందుటకు కార్యక్రమం సిగ్నల్ SIGSEGV తో రద్దు
విభజన లోపంగా. కాబట్టి ఇప్పుడు నేను నిజానికి seg విమర్శలకు గురయ్యారు చేశారు,
నా ప్రోగ్రామ్ అందంగా ఉంది చాలా సమర్థవంతంగా అప్ ఇచ్చిన.
ఈ కార్యక్రమం ముగింపు.
విఫలమయ్యాయి ఢీకొట్టింది.
కాబట్టి చాలా లేదు, కానీ నేను వాస్తవానికి కొంచెం నేర్చుకోలేదు
ఈ చిన్న అనుభవం నుండి.
నేను ఏమి నేర్చుకున్నామని?
Well, నా ప్రోగ్రామ్ కూలిపోతుంది వెంటనే అందంగా చాలా.
నా కార్యక్రమం కూలిపోవడంతో ఒక strcmp కాల్, కానీ నేను
ఏ స్థానిక వేరియబుల్స్ కలిగి లేదు నా అది కూలిపోతుంది ఆ సమయంలో కార్యక్రమం.
సో వాట్ స్ట్రింగ్, లేదా తీగలను, నేను బహుశా పోల్చడం కావచ్చు.
నేను ఏ స్థానిక లేకపోతే వేరియబుల్స్, మీరు వాటిని
బహుశా ఒక నేను అక్కడ మనం సూచిస్తున్నాయని భావిస్తున్నారు నిజమైన కావచ్చు ఇది ప్రపంచ చరరాశి.
>> కానీ సాధారణంగా, అది కనిపిస్తుంది నేను పోల్చడం నేను
ఉనికిలో లేని ఏదో.
కాబట్టి యొక్క దర్యాప్తు వీలు ఒక చిన్న మరింత ఆ.
నేను నా స్క్రీన్ క్లియర్ వెళుతున్న.
నేను బయటకు విడిచి వెళుతున్న రెండవ కోసం GDB వాతావరణంలో.
మరియు నేను సరే, ఆలోచిస్తూ ఉన్నాను, కాబట్టి ఉంది నా కార్యక్రమంలో ఎటువంటి స్థానిక వేరియబుల్స్.
నేను పాస్ కోరుకుంటున్నాము చేస్తున్నాను ఉండవచ్చు ఉంటే నేను ఆశ్చర్యానికి ఒక కమాండ్ లైన్ వాదన గా ఒక స్ట్రింగ్ లో.
కాబట్టి యొక్క ఈ పరీక్షించడానికి వీలు.
నేను ముందు ఈ చేయలేదు.
>> నేను ఈ ప్రోగ్రామ్ రన్ ఉండవచ్చు ఉంటే యొక్క చూసేలా ఒక కమాండ్ లైన్ వాదన తో ఇది పనిచేస్తుంది.
అహ్, ఏ విభజన లోపంగా.
ఇది కేవలం నేను కనుగొన్నారు అని నాకు చెప్పారు.
కాబట్టి బహుశా ఆ పరిష్కారము ఇక్కడ.
నేను తిరిగి వెళ్లి ఉంటే నిజానికి, చూడండి buggy1.c అసలు సోర్స్ కోడ్,
నేను ఏమి చేస్తున్నానో నాకు ఉంది అయితే ఇది ఉంది నేను లేకుండా strcmp ఒక కాల్ మేకింగ్ వెబ్
నిజానికి argv [1] ఉందో లేదో తనిఖీ.
ఈ నిజానికి buggy1.c కోసం సోర్స్ కోడ్.
కాబట్టి నేను నిజంగా అవసరం ఏమి నా కార్యక్రమాన్ని సరిదిద్దగలరు ఇక్కడ ఏమి,
ఊహిస్తూ నేను కలిగి , నాకు ముందు దాఖలు
కేవలం చేయడానికి ఒక చెక్ జోడించడానికి ఖచ్చితంగా ఆ argc 2 సమానం.
కాబట్టి ఈ ఉదాహరణ, మళ్ళీ నేను, అన్నాడు వంటి కుడి, కొద్దిగా కంట్రైవ్డ్ ఉంది?
మీరు సాధారణంగా వెళ్ళడం లేదు చేస్తున్నాం అనుకోకుండా మీ సోర్స్ కోడ్ తొలగించండి
ఆపై ప్రయత్నించండి మరియు ప్రోగ్రామ్ డీబగ్.
కానీ ఆశాజనక, అది ఇచ్చింది మీరు దృష్టాంతం
విషయాలు రకాల ఆ మీరు గురించి ఆలోచిస్తూ చేయవచ్చు
మీరు మీ కార్యక్రమాన్ని డీబగ్గింగ్ చేస్తున్నారు.
>> ఇక్కడ వ్యవహారాలు రాష్ట్రంలో ఏమిటి?
ఏ వేరియబుల్స్ నేను దీన్ని నాకు అందుబాటులో ఉందా?
ఎక్కడ ఖచ్చితంగా నా ప్రోగ్రామ్ ఏమి లైన్, క్రాష్,
ఏమి ఫంక్షన్ ఏమి కాల్ న?
ఆధారాలు ఏ విధమైన నాకు ఇవ్వలేదు?
మరియు ఆ సరిగ్గా వార్తలు అభిప్రాయం రకమైన మీరు
మీరు ఉన్నప్పుడు వెళ్ళడం చేయాలి మీ కార్యక్రమాలు డీబగ్గింగ్ గురించి ఆలోచిస్తూ.
>> నేను డౌ లాయిడ్ ఉన్నాను.
ఈ CS50 ఉంది.