ఏదైనా ప్రోగ్రామ్ వినియోగదారులకు చేరే ముందు లోపాలు లేకుండా ఉండాలి. సాఫ్ట్వేర్ డెవలపర్లు సాఫ్ట్వేర్ ప్రోగ్రామ్లను బగ్-ఫ్రీగా చేయడానికి తమ వంతు ప్రయత్నం చేస్తారు. కానీ వేలాది పంక్తులు ఉన్నప్పుడు కోడ్ని దోషరహితంగా చేయడం కష్టం. డీబగ్గింగ్ అనేది కొనసాగుతున్న ప్రక్రియ; ఇది లోపాలను వెంటనే గుర్తించడంలో, కోడ్ గురించి విలువైన సమాచారాన్ని సేకరించడంలో మరియు అనవసరమైన కోడ్ భాగాలను తొలగించడంలో సహాయపడుతుంది.
బగ్లను కనుగొనడానికి అన్ని ప్రోగ్రామింగ్ భాషలలో కొన్ని సాధారణ మరియు కొన్ని విభిన్న విధానాలు ఉన్నాయి. ఉదాహరణకు, దోషాలను త్వరగా తొలగించడానికి డీబగ్గింగ్ ప్రోగ్రామ్లను ఉపయోగించవచ్చు. కోడ్ను డీబగ్ చేయడానికి షెల్ స్క్రిప్టింగ్లో నిర్దిష్ట సాధనం లేదు. ఈ వ్రాయడం అనేది బాష్ స్క్రిప్ట్ దోష రహితంగా చేయడానికి ఉపయోగపడే వివిధ డీబగ్గింగ్ టెక్నిక్ల గురించి చర్చించడం. మేము పద్ధతుల్లోకి ప్రవేశించే ముందు, షెల్లు మరియు షెల్ స్క్రిప్టింగ్పై ప్రాథమిక అవగాహన కలిగి ఉంటాం:
Linux లో షెల్ అంటే ఏమిటి?
మీరు మీ కంప్యూటర్ను బూట్ చేసినప్పుడు, కెర్నల్ అటాచ్ చేయబడిన హార్డ్వేర్ గురించి సమాచారాన్ని పొందుతుంది మరియు ఇతర అటాచ్డ్ కాంపోనెంట్లను ఇంటరాక్ట్ చేయడానికి అనుమతిస్తుంది. అంతే కాకుండా, ఇది మెమరీ, CPU ని నిర్వహిస్తుంది మరియు ఏదైనా కొత్త పరిధీయతను గుర్తిస్తుంది. మొత్తం మీద, ఏదైనా ఆపరేటింగ్ సిస్టమ్కు కెర్నల్ వెన్నెముక. కానీ కెర్నల్తో నేరుగా ఇంటరాక్ట్ అవ్వాలని, ఒక నిర్దిష్ట పనిని చేయమని ఆదేశించాలని మీరు ఎప్పుడైనా ఆలోచించారా? అలా చేయడం కూడా ఆచరణ సాధ్యమేనా? ఖచ్చితంగా! ఇంటరాక్టివ్ ఇంటర్ఫేస్ ఉన్న కంప్యూటర్ ప్రోగ్రామ్ షెల్ సహాయంతో, ఎవరైనా కెర్నల్ను ఆపరేట్ చేయవచ్చు. షెల్ మానవులను కెర్నల్తో ఇంటరాక్ట్ చేయడానికి మరియు ఏదైనా పనిని చేయమని సూచించడానికి అనుమతిస్తుంది.
యునిక్స్లో, రెండు ప్రధాన పెంకులు ఉన్నాయి బోర్న్ షెల్ మరియు సి షెల్ . ఈ రెండు రకాలు వాటి ఉపవర్గాలను కలిగి ఉన్నాయి. వివిధ రకాల బోర్న్ షెల్స్ ఉన్నాయి కార్న్ షెల్ (ksh), ఆల్క్విస్ట్ షెల్ (బూడిద), బోర్న్ మళ్లీ షెల్ (బాష్), మరియు Z షెల్ (zsh) . అదే సమయంలో, సి షెల్ దాని స్వంత ఉపవర్గాలను కలిగి ఉంది సి షెల్ (csh) మరియు TENEX C షెల్ (tcsh) . పైన చెప్పినట్లుగా, అన్ని పెంకుల నుండి, బాష్ (బోర్న్ ఎగైన్ షెల్) అత్యంత విస్తృతంగా ఉపయోగించే షెల్ మరియు దాని సామర్థ్యం మరియు యూజర్-స్నేహపూర్వకత కారణంగా అనేక లైనక్స్ పంపిణీలలో బాక్స్ నుండి బయటకు వస్తుంది.
బాష్ అనేది అనేక లైనక్స్ డిస్ట్రిబ్యూషన్ల డిఫాల్ట్ షెల్ మరియు దీనిని మిలియన్ల మంది లైనక్స్ వినియోగదారులు విస్తృతంగా ఉపయోగిస్తున్నారు. ఇది చాలా వైవిధ్యమైనది మరియు ప్రభావవంతమైనది, ఇది మీరు సాధారణంగా GUI- ఆధారిత అప్లికేషన్లలో చేసే ప్రతి పనిని చేయగలదు. మీరు ఫైల్లను సవరించవచ్చు, ఫైల్లను నిర్వహించవచ్చు, ఫోటోలను చూడవచ్చు, సంగీతం వినవచ్చు, వీడియోలను ప్లే చేయవచ్చు మరియు మరెన్నో చేయవచ్చు.
షెల్ స్క్రిప్ట్ అంటే ఏమిటి:
మేము షెల్ యొక్క ప్రాథమిక ఆలోచనను నేర్చుకున్నందున, ఇప్పుడు షెల్ స్క్రిప్టింగ్ వైపు వెళ్దాం. షెల్ స్క్రిప్ట్ అనేది ఒక కంప్యూటర్ ప్రోగ్రామ్, ఇది షెల్లో బహుళ ఆదేశాలను అమలు చేస్తుంది, ఇది ఒక నిర్దిష్ట ఫంక్షన్ను నిర్వహించడానికి వ్యాఖ్యాతగా పనిచేస్తుంది. పైన చర్చించినట్లుగా, 2 ప్రత్యేక రకాల గుండ్లు ఉన్నాయి. అయితే, ఈ గైడ్ బోర్న్ అగైన్ షెల్ (బాష్) పై దృష్టి పెడుతుంది.
కాబట్టి బాష్ స్క్రిప్ట్ అంటే ఏమిటి? Linux లో, అన్ని బాష్ ఆదేశాలు నిల్వ చేయబడతాయి /usr /bin మరియు /bin ఫోల్డర్లు. ఉదాహరణకు, మీరు ఆదేశాన్ని అమలు చేసినప్పుడల్లా, అది డైరెక్టరీలో ఉందా లేదా అని బాష్ వెతుకుతుంది. డైరెక్టరీలలో కనుగొనబడితే కమాండ్ అమలు చేయబడుతుంది, లేకపోతే లోపం వస్తుంది.
టెర్మినల్లో అమలు చేయడానికి బహుళ ఆదేశాలు అవసరమయ్యే పనిని ఎలా చేయాలి? ఈ నిర్దిష్ట పరిస్థితిలో, బాష్ స్క్రిప్టింగ్ మీకు సహాయపడుతుంది. బాష్ స్క్రిప్టింగ్ అనేది షెల్ స్క్రిప్టింగ్ యొక్క ఒక రూపం, ఇది ఒక నిర్దిష్ట పనిని నిర్వహించడానికి బహుళ బాష్ ఆదేశాలను అమలు చేయడానికి ప్రోగ్రామ్లను చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
బాష్ స్క్రిప్టింగ్లో దోషాలు ఏమిటి:
బాష్ స్క్రిప్టింగ్తో లేదా ఇతర ప్రోగ్రామింగ్ భాషలతో పని చేస్తున్నప్పుడు, మీరు అనేక లోపాలను ఎదుర్కొంటారు. బగ్ అనేది ప్రోగ్రామ్లోని లోపం లేదా లోపం, ఇది ప్రోగ్రామ్ తప్పుగా ప్రవర్తించడానికి కారణమవుతుంది.
బగ్లను కనుగొనడానికి ప్రతి ప్రోగ్రామింగ్ భాషకు దాని స్వంత విధానం ఉంది; అదేవిధంగా, టెర్మినల్ ప్రోగ్రామ్ను డీబగ్ చేయడానికి బాష్లో అనేక బిల్డ్-ఇన్ ఎంపికలు కూడా ఉన్నాయి.
లోపాలను నిర్వహించడం మరియు ప్రోగ్రామ్ను డీబగ్గింగ్ చేయడం ఒక ఇబ్బంది కంటే తక్కువ కాదు. ఇది సమయం తీసుకునే పని మరియు మీ ప్రోగ్రామ్ని డీబగ్ చేయడానికి సరైన సాధనాల గురించి మీకు తెలియకపోతే మరింత తీవ్రమవుతుంది. మీ స్క్రిప్ట్ దోష రహితంగా చేయడానికి బాష్-స్క్రిప్ట్ల డీబగ్గింగ్ గురించి ఈ రైట్-అప్ పూర్తి గైడ్. కాబట్టి ప్రారంభిద్దాం:
బాష్ స్క్రిప్ట్ను ఎలా డీబగ్ చేయాలి:
మీరు పెద్ద ప్రోగ్రామింగ్ ప్రాజెక్ట్లలో పని చేసినప్పుడు, మీరు అనేక లోపాలు లేదా బగ్లను ఎదుర్కొంటారు. ప్రోగ్రామ్ని డీబగ్ చేయడం కొన్నిసార్లు సంక్లిష్టంగా ఉంటుంది. ప్రోగ్రామర్లు సాధారణంగా డీబగ్గింగ్ సాధనాలను ఉపయోగిస్తారు, మరియు అనేక కోడ్ ఎడిటర్లు వాక్యనిర్మాణాన్ని హైలైట్ చేయడం ద్వారా బగ్ కనుగొనడంలో సహాయపడతాయి.
కోడ్లను డీబగ్ చేయడానికి Linux లో వివిధ టూల్స్ ఉన్నాయి, ఉదాహరణకు, GNU డీబగ్గర్ అకా gdb. GDB వంటి టూల్స్ బైనరీలుగా కంపైల్ చేసే ప్రోగ్రామింగ్ లాంగ్వేజ్లకు ఉపయోగపడతాయి. బాష్ అనేది సాధారణ భాషా భాష కాబట్టి, దాన్ని డీబగ్ చేయడానికి భారీ టూల్స్ అవసరం లేదు.
బాష్ స్క్రిప్టింగ్ కోడ్ను డీబగ్ చేయడానికి అనేక సాంప్రదాయ పద్ధతులు ఉన్నాయి మరియు వాటిలో ఒకటి జోడించడం వాదనలు నిర్దిష్ట పరిస్థితులను తనిఖీ చేయడానికి మరియు తదనుగుణంగా ప్రోగ్రామ్ను అమలు చేయడానికి ప్రోగ్రామ్లలో జోడించిన షరతులు అసర్షన్లు. ఇది దోషాలను కనుగొనడంలో మరియు పరీక్షించడంలో సహాయపడే ఒక రక్షణాత్మక టెక్నిక్. మీరు చాలా కనుగొనవచ్చు టూల్స్ అది బాష్ స్క్రిప్ట్లలో ప్రకటనలను జోడించడంలో సహాయపడుతుంది.
సరే, ప్రకటనలను జోడించడం అనేది పాత సాంప్రదాయ పద్ధతుల్లో ఒకటి. బాష్ స్క్రిప్ట్ను డీబగ్ చేయడానికి బ్యాష్లో ఫ్లాగ్లు/ఆప్షన్లు అందుబాటులో ఉన్నాయి. స్క్రిప్ట్లలో షెబాంగ్తో పాటుగా ఈ ఎంపికలను జోడించవచ్చు లేదా టెర్మినల్లో ప్రోగ్రామ్ను అమలు చేస్తున్నప్పుడు జోడించవచ్చు. మేము చేపట్టబోతున్న అంశాలు క్రింద ఇవ్వబడ్డాయి:
- ఎనేబుల్ చేయడం ద్వారా బాష్ స్క్రిప్ట్ను ఎలా డీబగ్ చేయాలి వెర్బోస్ -v ఎంపిక
- ఉపయోగించి బాష్ స్క్రిప్ట్ను ఎలా డీబగ్ చేయాలి ఎక్స్ట్రేస్ -ఎక్స్ ఎంపిక
- ఉపయోగించి బాష్ స్క్రిప్ట్ను ఎలా డీబగ్ చేయాలి noexec -n ఎంపిక
- ఎలా గుర్తించాలి సెట్ చేయని వేరియబుల్స్ బాష్ స్క్రిప్ట్ను డీబగ్ చేస్తున్నప్పుడు
- ఎలా డీబగ్ చేయాలి నిర్దిష్ట భాగం బాష్ స్క్రిప్ట్ యొక్క
- ఉపయోగించి బాష్ స్క్రిప్ట్ను ఎలా డీబగ్ చేయాలి ఉచ్చు కమాండ్
- తొలగించడం ద్వారా బాష్ స్క్రిప్ట్ను ఎలా డీబగ్ చేయాలి ఫైల్ గ్లోబింగ్ ఉపయోగించి -f ఎంపిక
- ఎలా కలపండి షెల్ స్క్రిప్ట్ను డీబగ్ చేయడానికి ఎంపికలను డీబగ్గింగ్ చేయండి
- ఎలా డీబగ్-నివేదికను దారి మళ్లించండి ఒక ఫైల్కు
కాబట్టి బాష్ స్క్రిప్ట్ను డీబగ్ చేయడానికి బాష్లోని వివిధ పద్ధతులను తనిఖీ చేద్దాం:
1. వెర్బోస్ -v ఎంపికను ప్రారంభించడం ద్వారా బాష్ స్క్రిప్ట్ను ఎలా డీబగ్ చేయాలి:
బాష్ స్క్రిప్ట్ను డీబగ్ చేయడానికి సులభమైన విధానాలలో ఒకటి దీనిని ఉపయోగించడం -v ఎంపిక, వెర్బోస్ అని కూడా పిలుస్తారు. ఎంపికను షెబాంగ్తో జోడించవచ్చు లేదా స్క్రిప్ట్ ఫైల్ పేరుతో అమలు చేసేటప్పుడు స్పష్టంగా ఉంచవచ్చు. వెర్బోస్ ఎంపిక కోడ్లోని ప్రతి పంక్తిని ఇంటర్ప్రెటర్ ద్వారా ప్రాసెస్గా అమలు చేస్తుంది మరియు ప్రింట్ చేస్తుంది. బాష్ స్క్రిప్ట్ ఉదాహరణతో దీనిని అర్థం చేసుకుందాం:
#! /బిన్/బాష్బయటకు విసిరారు 'నంబర్ 1 నమోదు చేయండి'
చదవండిసంఖ్య 1
బయటకు విసిరారు 'నంబర్ 2 నమోదు చేయండి'
చదవండిసంఖ్య 2
ఉంటే [ '$ నంబర్ 1' -జిటి '$ నంబర్ 2' ]
అప్పుడు
బయటకు విసిరారు 'నంబర్ 1 సంఖ్య 2 కంటే ఎక్కువ'
ఎలిఫ్ [ '$ నంబర్ 1' -ఎక్యూ '$ నంబర్ 2' ]
అప్పుడు
బయటకు విసిరారు 'నంబర్ 1 సంఖ్య 2 కి సమానం'
లేకపోతే
బయటకు విసిరారు 'నంబర్ 2 నంబర్ 1 కంటే ఎక్కువ'
ఉంటుంది
పై కోడ్ వినియోగదారు నుండి రెండు నంబర్లను పొందుతోంది మరియు ఆ సంఖ్య మరింత ముఖ్యమైనదా, తక్కువదా లేదా నమోదు చేసిన ఇతర నంబర్కు సమానమైనదా అని తనిఖీ చేయడానికి కొన్ని షరతులతో కూడిన స్టేట్మెంట్లను ప్రదర్శిస్తుంది. ఏదైనా టెక్స్ట్ ఎడిటర్ను బాష్ స్క్రిప్టింగ్ కోసం ఉపయోగించగలిగినప్పటికీ, నేను విమ్ ఎడిటర్ని ఉపయోగిస్తున్నాను. విమ్ ఒక శక్తివంతమైన, ఫీచర్-రిచ్ ఎడిటర్, ఇది బాష్ స్క్రిప్ట్ల వాక్యనిర్మాణాన్ని హైలైట్ చేస్తుంది మరియు వాక్యనిర్మాణ లోపాల అవకాశాలను తగ్గిస్తుంది. మీకు విమ్ ఎడిటర్ లేకపోతే, దిగువ పేర్కొన్న ఆదేశాన్ని అమలు చేయడం ద్వారా దాన్ని పొందండి:
$సుడోసముచితమైనదిఇన్స్టాల్ నేను వచ్చానుదీన్ని ఉపయోగించి బాష్ స్క్రిప్ట్ ఫైల్ని సృష్టించండి:
$నేను వచ్చానుb_script.shమీరు విమ్ ఎడిటర్కి కొత్తగా ఉంటే, మీరు నేర్చుకోవాలని నేను సిఫార్సు చేస్తున్నాను విమ్ ఎడిటర్ను ఎలా ఉపయోగించాలి కొనసాగే ముందు.
ఇప్పుడు, స్క్రిప్ట్కి తిరిగి, స్క్రిప్ట్ను ఉపయోగించి అమలు చేయండి -v ఎంపిక:
$బాష్ -vb_script.sh
స్క్రిప్ట్ యొక్క ప్రతి లైన్ ఇంటర్ప్రెటర్ ద్వారా ప్రాసెస్ చేయబడినప్పుడు టెర్మినల్లో ముద్రించబడిందని పై అవుట్పుట్లో చూడవచ్చు. స్క్రిప్ట్ వినియోగదారు నుండి ఇన్పుట్ తీసుకోవడం ఆపివేసి, ఆపై స్క్రిప్ట్ యొక్క తదుపరి లైన్ను ప్రాసెస్ చేస్తుంది. పైన చర్చించినట్లుగా -v కింది వాటిలో చూపిన విధంగా ఎంపికను షెబాంగ్ తర్వాత ఉంచవచ్చు:
#! / బిన్ / బాష్ -v
అదేవిధంగా, షెబాంగ్ యొక్క తదుపరి లైన్లో వెర్బోస్ జెండాను కూడా జోడించవచ్చు సెట్ ఆదేశం:
#! /బిన్/బాష్సెట్ -v
పైన చర్చించిన ఏవైనా పద్ధతులు వెర్బోస్ని ప్రారంభించగలవు.
2 ఎక్స్ట్రేస్ -x ఎంపికను ఉపయోగించి బాష్ స్క్రిప్ట్ను ఎలా డీబగ్ చేయాలి:
ఎక్స్ట్రేస్ ట్రేస్, ఎక్స్ట్రేస్ అని కూడా పిలుస్తారు, ముఖ్యంగా తార్కిక లోపాలను గుర్తించడానికి ఒక స్మార్ట్ మరియు ఉపయోగకరమైన డీబగ్గింగ్ ఎంపిక. తార్కిక లోపాలు సాధారణంగా వేరియబుల్స్ మరియు ఆదేశాలతో ముడిపడి ఉంటాయి. స్క్రిప్ట్ అమలు సమయంలో వేరియబుల్ స్థితిని తనిఖీ చేయడానికి, మేము దీనిని ఉపయోగిస్తాము -x ఎంపిక. ఇప్పుడు మళ్లీ, అమలు చేయండి b_script.sh తో ఫైల్ -x జెండా:
$బాష్ -xb_script.sh
అమలు ప్రక్రియలో ప్రతి వేరియబుల్ విలువను అవుట్పుట్ స్పష్టంగా చూపుతోంది. మళ్ళీ, ది -x సెట్ ఆదేశాన్ని ఉపయోగించి షెబాంగ్ పక్కన మరియు షెబాంగ్ లైన్ తర్వాత ఉపయోగించవచ్చు. ఎక్స్ట్రేస్ స్క్రిప్ట్ యొక్క ప్రతి లైన్తో + గుర్తును ఉంచుతుంది.
3 noexec -n ఎంపికను ఉపయోగించి బాష్ స్క్రిప్ట్ను ఎలా డీబగ్ చేయాలి:
వాక్యనిర్మాణ లోపాలు దోషాలకు ప్రధాన కారణాలలో ఒకటి. బాష్ స్క్రిప్ట్ను వాక్యనిర్మాణంగా డీబగ్ చేయడానికి, మేము ఉపయోగిస్తాము noexec (అమలు లేదు) మోడ్. Noexec మోడ్ కోసం ఉపయోగించే ఎంపిక -n. ఇది కోడ్ని అమలు చేయడానికి బదులుగా సింటాక్స్ లోపాలను మాత్రమే ప్రదర్శిస్తుంది. కోడ్ను డీబగ్గింగ్ చేయడానికి చాలా సురక్షితమైన విధానం. అమలు చేద్దాం b_script.sh మళ్ళీ దానితో -n ఎంపిక:
$బాష్ -nb_script.shసింటాక్స్ లోపం లేకపోతే కోడ్ అమలు ఉండదు. ఇప్పుడు, మా కోడ్ని సవరించుకుందాం:
#! /బిన్/బాష్బయటకు విసిరారు 'నంబర్ 1 నమోదు చేయండి'
చదవండిసంఖ్య 1
బయటకు విసిరారు 'నంబర్ 2 నమోదు చేయండి'
చదవండిసంఖ్య 2
ఉంటే [ '$ నంబర్ 1' -జిటి '$ నంబర్ 2' ]
అప్పుడు
బయటకు విసిరారు 'నంబర్ 1 సంఖ్య 2 కంటే ఎక్కువ'
ఎలిఫ్ [ '$ నంబర్ 1' -ఎక్యూ '$ నంబర్ 2' ]
#అప్పుడు
బయటకు విసిరారు 'నంబర్ 1 సంఖ్య 2 కి సమానం'
లేకపోతే
బయటకు విసిరారు 'నంబర్ 2 నంబర్ 1 కంటే ఎక్కువ'
ఉంటుంది
నేను వ్యాఖ్యానిస్తున్నాను అప్పుడు తర్వాత ఎలిఫ్ . ఇప్పుడు, -n అమలుతో b_script.sh స్క్రిప్ట్:
$బాష్ -nb_script.sh
ముందుగా ఊహించినట్లుగా, ఇది లోపం స్పష్టంగా గుర్తించబడింది మరియు దానిని టెర్మినల్లో ప్రదర్శిస్తుంది.
4 బాష్ స్క్రిప్ట్ను డీబగ్ చేస్తున్నప్పుడు సెట్ చేయని వేరియబుల్స్ను ఎలా గుర్తించాలి:
కోడ్ రాసేటప్పుడు అక్షర దోషం ఏర్పడటం సర్వసాధారణం. తరచుగా, మీరు వేరియబుల్ను తప్పుగా టైప్ చేస్తారు, ఇది కోడ్ను అమలు చేయడానికి అనుమతించదు. అటువంటి లోపాన్ని గుర్తించడానికి, మేము దీనిని ఉపయోగిస్తాము -ఉ ఎంపిక. కోడ్ని మళ్లీ సవరించుకుందాం:
#! /బిన్/బాష్బయటకు విసిరారు 'నంబర్ 1 నమోదు చేయండి'
చదవండిసంఖ్య 1
బయటకు విసిరారు 'నంబర్ 2 నమోదు చేయండి'
చదవండిసంఖ్య 2
ఉంటే [ '$ num1' -జిటి '$ నంబర్ 2' ]
అప్పుడు
బయటకు విసిరారు 'నంబర్ 1 సంఖ్య 2 కంటే ఎక్కువ'
ఎలిఫ్ [ '$ నంబర్ 1' -ఎక్యూ '$ నంబర్ 2' ]
అప్పుడు
బయటకు విసిరారు 'నంబర్ 1 సంఖ్య 2 కి సమానం'
లేకపోతే
బయటకు విసిరారు 'నంబర్ 2 నంబర్ 1 కంటే ఎక్కువ'
ఉంటుంది
మొదటి లో ఉంటే షరతులతో కూడిన ప్రకటన, నేను పేరు మార్చాను సంఖ్య 1 కు వేరియబుల్ సంఖ్య 1 . ఇప్పుడు సంఖ్య 1 సెట్ చేయని వేరియబుల్. ఇప్పుడు స్క్రిప్ట్ రన్ చేయండి:
$బాష్ -ఉb_script.sh
అవుట్పుట్ సెట్ చేయని వేరియబుల్ పేరును గుర్తించి స్పష్టంగా ప్రదర్శిస్తుంది.
5. బాష్ స్క్రిప్ట్ యొక్క నిర్దిష్ట భాగాన్ని ఎలా డీబగ్ చేయాలి:
ఎక్స్ట్రేస్ మోడ్ కోడ్లోని ప్రతి పంక్తిని ప్రాసెస్ చేస్తుంది మరియు అవుట్పుట్ ఇస్తుంది. ఏదేమైనా, ఒక పెద్ద కోడ్లో లోపాలను కనుగొనడం వలన సమయం తప్పుతుంది, ఏ భాగం దోషానికి కారణమవుతుందో మనకు ఇప్పటికే తెలిస్తే. అదృష్టవశాత్తూ, ఎక్స్ట్రేస్ కోడ్ యొక్క నిర్దిష్ట భాగాన్ని డీబగ్ చేయడానికి కూడా మిమ్మల్ని అనుమతిస్తుంది, దీనిని ఉపయోగించి సాధించవచ్చు సెట్ కమాండ్ స్థలం set -x భాగం ప్రారంభంలో డీబగ్ చేయబడాలి మరియు తరువాత సెట్ +x చివరలో. ఉదాహరణకు, నేను షరతులతో కూడిన స్టేట్మెంట్లను డీబగ్ చేయాలనుకుంటున్నాను b_script.sh , కాబట్టి నేను అన్ని షరతులతో కూడిన స్టేట్మెంట్లను జత చేస్తాను set -x మరియు సెట్ +x దిగువ కోడ్లో చూపిన విధంగా ఎంపికలు:
#! /బిన్/బాష్బయటకు విసిరారు 'నంబర్ 1 నమోదు చేయండి'
చదవండిసంఖ్య 1
బయటకు విసిరారు 'నంబర్ 2 నమోదు చేయండి'
చదవండిసంఖ్య 2
సెట్ -x
ఉంటే [ '$ సంఖ్య' -జిటి '$ నంబర్ 2' ]
అప్పుడు
బయటకు విసిరారు 'నంబర్ 1 సంఖ్య 2 కంటే ఎక్కువ'
ఎలిఫ్ [ '$ నంబర్ 1' -ఎక్యూ '$ నంబర్ 2' ]
అప్పుడు
బయటకు విసిరారు 'నంబర్ 1 సంఖ్య 2 కి సమానం'
లేకపోతే
బయటకు విసిరారు 'నంబర్ 2 నంబర్ 1 కంటే ఎక్కువ'
ఉంటుంది
సెట్+ x
ఇప్పుడు, ఉపయోగించి స్క్రిప్ట్ రన్ చేయండి బాష్ b_script.sh .
పేర్కొన్న విధంగా ఉంటే షరతులను debట్పుట్ మాత్రమే డీబగ్గింగ్ చేస్తుంది.
6. ట్రాప్ కమాండ్ ఉపయోగించి బాష్ స్క్రిప్ట్ను ఎలా డీబగ్ చేయాలి:
మీ స్క్రిప్ట్ క్లిష్టంగా ఉంటే, డీబగ్గింగ్ కోసం మరింత విస్తృతమైన పద్ధతులు కూడా ఉన్నాయి. వాటిలో ఒకటి ఉచ్చు కమాండ్ ది ఉచ్చు కమాండ్ సిగ్నల్స్ని క్యాచ్ చేస్తుంది మరియు నిర్దిష్ట పరిస్థితి ఏర్పడినప్పుడు కమాండ్ను అమలు చేస్తుంది. కమాండ్ సిగ్నల్ లేదా ఫంక్షన్ కావచ్చు. నేను పేరుతో మరొక లిపిని సృష్టించాను sum_script.sh :
#! /బిన్/బాష్ఉచ్చు 'ఎకో' లైన్ $ {LINENO}: మొదటి నంబర్ $ number1, రెండవ సంఖ్య $ number2 మరియు మొత్తం $ sum ''డీబగ్
బయటకు విసిరారు 'మొదటి సంఖ్యను నమోదు చేయండి'
చదవండిసంఖ్య 1
బయటకు విసిరారు 'రెండవ సంఖ్యను నమోదు చేయండి'
చదవండిసంఖ్య 2
మొత్తం= $[సంఖ్య 1 + సంఖ్య 2]
బయటకు విసిరారు 'మొత్తం$ మొత్తం'
ది ఉచ్చు తో కమాండ్ డీబగ్ వేరియబుల్స్ స్థితిని సిగ్నల్ ప్రదర్శిస్తుంది సంఖ్య 1 , సంఖ్య 2 మరియు మొత్తం కింది అవుట్పుట్ చిత్రంలో చూపిన విధంగా ప్రతి పంక్తిని అమలు చేసిన తర్వాత:
యూజర్ ఇంకా ఇన్పుట్ను నమోదు చేయనందున పసుపు బ్లాక్లు ఖాళీగా ఉన్నాయి; వినియోగదారు విలువలను నమోదు చేసినప్పుడు ఈ ఖాళీలు పూరించబడతాయి. బాష్ స్క్రిప్ట్లను డీబగ్గింగ్ చేయడంలో కూడా ఈ పద్ధతి బాగా ఉపయోగపడుతుంది.
7. -f ఎంపికను ఉపయోగించి ఫైల్ గ్లోబింగ్ను తొలగించడం ద్వారా బాష్ స్క్రిప్ట్ను ఎలా డీబగ్ చేయాలి:
ఫైల్ గ్లోబింగ్ అనేది వైల్డ్కార్డ్ అక్షరాలతో ఫైల్లను కనుగొనే ప్రక్రియ, అనగా, * మరియు ? . అనేక పరిస్థితులలో, డీబగ్గింగ్ చేసేటప్పుడు మీరు ఫైల్లను విస్తరించాల్సిన అవసరం లేదు. అలాంటి సందర్భాలలో, మీరు ఫైల్ గ్లోబింగ్ను ఉపయోగించి బ్లాక్ చేయవచ్చు -f ఎంపిక. దాన్ని స్క్రిప్ట్తో అర్థం చేసుకుందాం fglobe_script.sh :
#! /బిన్/బాష్బయటకు విసిరారు 'అన్ని టెక్స్ట్ ఫైల్లను ప్రదర్శించు.'
ls *.పదము
పై కోడ్ ప్రస్తుత డైరెక్టరీలోని అన్ని టెక్స్ట్ ఫైల్లను ప్రదర్శిస్తుంది, అమలు చేయండి:
$బాష్fglobe_script.sh
ఫైల్ గ్లోబింగ్ను ఆఫ్ చేయడానికి, ఉపయోగించండి -f ఎంపిక:
$బాష్ -ffglobe_script.sh
అదేవిధంగా, మీరు దానిని షెబాంగ్తో మరియు దానితో ఉపయోగించవచ్చు సెట్ ఆదేశం కూడా:
#! /బిన్/బాష్బయటకు విసిరారు 'అన్ని టెక్స్ట్ ఫైల్లను ప్రదర్శించు.'
ls *.పదము
సెట్ -f
బయటకు విసిరారు 'అన్ని టెక్స్ట్ ఫైల్లను ప్రదర్శించు'
ls *.పదము
సెట్+ఎఫ్
ఇప్పుడు, అమలు చేయండి బాష్ fglobe_script.sh:
దీనితో కూడిన భాగం సెట్ -f/సెట్ +f ఎంపికలు వైల్డ్కార్డ్ అక్షరాలతో ఆదేశాలను ప్రాసెస్ చేయలేదు.
8. షెల్ స్క్రిప్ట్ను డీబగ్ చేయడానికి డీబగ్గింగ్ ఎంపికలను ఎలా కలపాలి:
పైన పేర్కొన్న డీబగ్గింగ్ టెక్నిక్లలో మేము ఒక ఎంపికను మాత్రమే ఉపయోగిస్తాము, కానీ మెరుగైన అవగాహన కోసం మేము వివిధ ఎంపికలను కలపవచ్చు. అమలు చేద్దాం -x మరియు -v కు ఎంపికలు sum_script.sh స్క్రిప్ట్. నేను ఉపయోగిస్తున్నాను sum_script.sh స్క్రిప్ట్.
#! /బిన్/బాష్బయటకు విసిరారు 'మొదటి సంఖ్యను నమోదు చేయండి'
చదవండిసంఖ్య 1
బయటకు విసిరారు 'రెండవ సంఖ్యను నమోదు చేయండి'
చదవండిసంఖ్య 2
మొత్తం= $[సంఖ్య 1 + సంఖ్య 2]
బయటకు విసిరారు 'మొత్తం$ మొత్తం'
ఇప్పుడు అమలు చేయండి:
$బాష్ -ఎక్స్విsum_script.sh
రెండు -x మరియు -v అవుట్పుట్ ఇమేజ్లో ప్రదర్శించబడిన విధంగా అవుట్పుట్లు మిళితం చేయబడతాయి. అదేవిధంగా, మనం కూడా కలపవచ్చు -ఉ లోపం గుర్తింపు కోసం వెర్బోస్ -v తో ఎంపిక. నేను భర్తీ చేస్తున్నాను సంఖ్య 1 తో వేరియబుల్ ఒకదానిపై స్క్రిప్ట్ యొక్క ఆరవ పంక్తిలో:
#! /బిన్/బాష్ఉంది$ నంబర్ 2మరియుమొత్తంఉంది$ మొత్తం'' డీబగ్
బయటకు విసిరారు 'మొదటి సంఖ్యను నమోదు చేయండి'
నంబర్ 1 చదవండి
బయటకు విసిరారు 'రెండవ సంఖ్యను నమోదు చేయండి'
సంఖ్య 2 చదవండి
మొత్తం = $ [num + number2]
బయటకు విసిరారు 'దిమొత్తంఉంది$ మొత్తం'
అవుట్పుట్ను చూడటానికి, దిగువ పేర్కొన్న ఆదేశాన్ని అమలు చేయండి:
$బాష్ -యువsum_script.sh
9. డీబగ్-రిపోర్ట్ను ఫైల్కి ఎలా రీడైరెక్ట్ చేయాలి:
బాష్ స్క్రిప్ట్ యొక్క డీబగ్ నివేదికను ఫైల్కు సేవ్ చేయడం అనేక సందర్భాల్లో ఉపయోగపడుతుంది. డీబగ్-రిపోర్ట్ను ఫైల్కి మళ్లించడానికి ఎందుకంటే ఇది కొంచెం గమ్మత్తైనది; మేము కొన్ని ప్రత్యేక వేరియబుల్స్ ఉపయోగిస్తాము. దానిని అమలు చేద్దాం b_script.sh కోడ్:
#! /బిన్/బాష్కార్యనిర్వహణ 5>dubug_report.log
BASH_XTRACED='5'
PS4='$ LINENO--'
బయటకు విసిరారు 'నంబర్ 1 నమోదు చేయండి'
చదవండిసంఖ్య 1
బయటకు విసిరారు 'నంబర్ 2 నమోదు చేయండి'
చదవండిసంఖ్య 2
ఉంటే [ '$ సంఖ్య' -జిటి '$ నంబర్ 2' ]
అప్పుడు
బయటకు విసిరారు 'నంబర్ 1 సంఖ్య 2 కంటే ఎక్కువ'
ఎలిఫ్ [ '$ నంబర్ 1' -ఎక్యూ '$ నంబర్ 2' ]
అప్పుడు
బయటకు విసిరారు 'నంబర్ 1 సంఖ్య 2 కి సమానం'
లేకపోతే
బయటకు విసిరారు 'నంబర్ 2 నంబర్ 1 కంటే ఎక్కువ'
ఉంటుంది
కోడ్ యొక్క రెండవ పంక్తిలో, మేము అవుట్పుట్ను a కి మళ్ళిస్తున్నట్లు చూడవచ్చు debug_report.log ఫైల్ ఉపయోగించి కార్యనిర్వహణ ఫైల్ డిస్క్రిప్టర్ 5 (FD5) తో ఆదేశం.
exec 5> debug_report.log: ది కార్యనిర్వహణ కమాండ్ షెల్లో జరుగుతున్న ప్రతిదాన్ని ఫైల్కి మళ్లిస్తోంది debug_report.log.
BASH_XTRACEFD = 5: ఇది ఒక ప్రత్యేక బాష్ వేరియబుల్ మరియు ఏ ఇతర షెల్లోనూ ఉపయోగించలేము. దీనికి చెల్లుబాటు అయ్యే ఫైల్ డిస్క్రిప్టర్ను కేటాయించాల్సిన అవసరం ఉంది మరియు బాష్ సేకరించిన అవుట్పుట్ను వ్రాస్తుంది debug_report.log.
PS4 = '$ LINENO– ': ఇది ఎక్స్ట్రేస్ మోడ్ని ఉపయోగించి డీబగ్గింగ్ చేస్తున్నప్పుడు లైన్ నంబర్ను ప్రింట్ చేయడానికి ఉపయోగించే బాష్ వేరియబుల్. PS4 యొక్క డిఫాల్ట్ విలువ + సంతకం
పై స్క్రిప్ట్ అనే లాగ్ ఫైల్ను రూపొందిస్తోంది debug_report.log, దీన్ని చదవడానికి, ఉపయోగించండి పిల్లి ఆదేశం:
ముగింపు:
బగ్లతో నిండిన కోడ్ ప్రోగ్రామ్ పనితీరును ప్రభావితం చేస్తుంది మరియు హార్డ్వేర్కు కూడా హానికరం. ప్రతి ప్రోగ్రామ్కు డీబగ్గింగ్ చాలా కీలకం ఎందుకంటే ఇది ప్రోగ్రామ్ను మరింత సమర్థవంతంగా చేస్తుంది. ప్రోగ్రామ్ అభివృద్ధి సమయంలో ఉన్న మరియు సంభావ్య లోపాలను కనుగొనడం వలన మీ ప్రోగ్రామ్ ఊహించని విధంగా ప్రవర్తించకుండా నిరోధించవచ్చు. పెద్ద కోడ్లకు సాధారణంగా యాక్టివ్ డీబగ్గింగ్ అవసరం, కోడ్ యొక్క వినియోగించే భాగాలను తొలగించడం ద్వారా కోడ్ ప్రభావాన్ని మెరుగుపరుస్తుంది.
అనేక ప్రోగ్రామింగ్ భాషలు మరియు పరిసరాలలో వారి స్వంత సహచర డీబగ్గర్లు ఉన్నాయి. బాష్ స్క్రిప్టింగ్లో, స్క్రిప్ట్ను డీబగ్ చేయడానికి వివిధ టెక్నిక్లను అమలు చేయవచ్చు. ఈ గైడ్ బాష్ స్క్రిప్ట్లలో దోషాలను కనుగొనడానికి ఉపయోగించే అన్ని పద్ధతులపై పూర్తిగా దృష్టి పెట్టింది. కాబట్టి మీ బాష్ స్క్రిప్ట్ ఆశించిన విధంగా ప్రవర్తించడం లేదని మీకు అనిపించినప్పుడు, పైన పేర్కొన్న ఏవైనా టెక్నిక్లను ఉపయోగించండి, అయితే ఎక్స్ట్రేస్ మోడ్ (-x) చాలా సందర్భాలలో చాలా ఉపయోగకరంగా ఉంటుంది.