Debugging သည် PHP ဖွံ့ဖြိုးတိုးတက်ရေးကာလအတွင်းအလွန်အရေးကြီးသောခြေလှမ်းတစ်ခုဖြစ်သည်။ အထူးသဖြင့်ရှုပ်ထွေးသော application များ၌အမှားအယွင်းများနှင့်ခြွင်းချက်များသည်မကြာခဏခြေရာခံရန်ခက်ခဲလာသည်။ ပြ problems နာများကိုရှာဖွေရန် developer များထံလွယ်ကူချောမွေ့စေရန် PHP သည် DebuguBackardrace နှင့် GetRacktrace နှင့် GetTracebacktace နှင့် GetTracebacktracing လုပ်ဆောင်ချက်များကိုအလွန်အမင်းအသုံးပြုသောကိရိယာများဖြစ်သည်။ သူတို့သည်ပရိုဂရမ်တစ်ခု၏ကွပ်မျက်မှုလုပ်ငန်းစဉ်ကိုခြေရာခံရန်နှင့်အသေးစိတ် stack အချက်အလက်များကိုဖန်တီးရန်သူတို့ကူညီနိုင်သည်။
Debugebacktace function သည် PHP တွင် built-in debugging tool တစ်ခုဖြစ်သည်။ ဤအချက်အလက်သည် function call တစ်ခုစီ၏ဖိုင်အမည်, လိုင်းနံပါတ်, function name, parametersters စသည်တို့ပါဝင်သည်။ ပြန်လာသော stack အချက်အလက်များကို array တစ်ခုတွင်ဖော်ပြထားသည်။ တစ်ခုချင်းစီကိုပစ္စည်းတစ်ခုစီသည် function call ကိုကိုယ်စားပြုသည်။
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">testFunc</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$param</span></span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">debug_backtrace</span></span><span>());
}
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">outerFunc</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">testFunc</span></span><span>(</span><span><span class="hljs-string">'Hello'</span></span><span>);
}
</span><span><span class="hljs-title function_ invoke__">outerFunc</span></span><span>();
</span></span> <span><span><span class="hljs-keyword">array</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>) {
[</span><span><span class="hljs-number">0</span></span><span>]=>
</span><span><span class="hljs-keyword">array</span></span><span>(</span><span><span class="hljs-number">6</span></span><span>) {
[</span><span><span class="hljs-string">"file"</span></span><span>]=> </span><span><span class="hljs-keyword">string</span></span><span>(</span><span><span class="hljs-number">35</span></span><span>) </span><span><span class="hljs-string">"/path/to/your/script.php"</span></span><span>
[</span><span><span class="hljs-string">"line"</span></span><span>]=> </span><span><span class="hljs-keyword">int</span></span><span>(</span><span><span class="hljs-number">8</span></span><span>)
[</span><span><span class="hljs-string">"function"</span></span><span>]=> </span><span><span class="hljs-keyword">string</span></span><span>(</span><span><span class="hljs-number">9</span></span><span>) </span><span><span class="hljs-string">"testFunc"</span></span><span>
[</span><span><span class="hljs-string">"args"</span></span><span>]=> </span><span><span class="hljs-keyword">array</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>) { [</span><span><span class="hljs-number">0</span></span><span>]=> </span><span><span class="hljs-keyword">string</span></span><span>(</span><span><span class="hljs-number">5</span></span><span>) </span><span><span class="hljs-string">"Hello"</span></span><span> }
[</span><span><span class="hljs-string">"object"</span></span><span>]=> </span><span><span class="hljs-literal">NULL</span></span><span>
[</span><span><span class="hljs-string">"type"</span></span><span>]=> </span><span><span class="hljs-keyword">string</span></span><span>(</span><span><span class="hljs-number">2</span></span><span>) </span><span><span class="hljs-string">"->"</span></span><span>
}
}
</span></span>ရလဒ်အနေဖြင့်သင်မြင်နိုင်သည့်အတိုင်း Debugebacktrace သည် ခေါ်ဆိုမှုတစ်ခုစီ၏အသေးစိတ်အချက်အလက်များကိုပြန်ပို့သည်။ ၎င်းတွင်ဖိုင်လမ်းကြောင်း, code line နံပါတ်, function name, incoming parameters များပါ 0 င်သည်။
GetTraceasString function သည် stack ၏အချက်အလက်များကိုခြွင်းချက်များ၏ခြွင်းချက်အချက်အလက်များကိုလွယ်ကူစွာဖတ်နိုင်သည့် string format အဖြစ်ပြောင်းလဲစေသည့် ခြွင်းချက် အတန်းအစားတစ်ခုဖြစ်သည်။ ပုံမှန်အားဖြင့်၎င်းသည် multi-line string တစ်ခုစီ, function call တစ်ခုကိုကိုယ်စားပြုသည်။ ဤနည်းလမ်းသည်ခြွင်းချက်များကိုဖမ်းယူသောအခါပုံတစ်ပုံလုံးကိုပုံနှိပ်ထုတ်ဝေရန်အထူးသဖြင့်သင့်လျော်သည်။
<span><span><span class="hljs-keyword">try</span></span><span> {
</span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">Exception</span></span><span>(</span><span><span class="hljs-string">"Something went wrong"</span></span><span>);
} </span><span><span class="hljs-keyword">catch</span></span><span> (</span><span><span class="hljs-built_in">Exception</span></span><span> </span><span><span class="hljs-variable">$e</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getTraceAsString</span></span><span>();
}
</span></span> <span><span><span class="hljs-selector-id">#0</span></span><span> /path/</span><span><span class="hljs-selector-tag">to</span></span><span>/your/script</span><span><span class="hljs-selector-class">.php</span></span><span>(</span><span><span class="hljs-number">12</span></span><span>): throw new </span><span><span class="hljs-built_in">Exception</span></span><span>(</span><span><span class="hljs-string">'Something went wrong'</span></span><span>)
#</span><span><span class="hljs-number">1</span></span><span> {</span><span><span class="hljs-selector-tag">main</span></span><span>}
</span></span>ဤအချိန်တွင် GetTraceasString သည် ချွင်းချက်၏ stack အချက်အလက်များကို string တစ်ခုအဖြစ်ထုတ်လွှင့်ပြီးခြွင်းချက်များနှင့်ဆက်စပ်သောခေါ်ဆိုမှုကွင်းဆက်တည်နေရာကိုပြသမည်။
Debugebacktace နှင့် GetRraceStrace နှစ်ခုလုံးကို stack information ရယူရန်သီးခြားစီအသုံးပြုနိုင်သော်လည်းတစ်ခါတစ်ရံကျွန်ုပ်တို့သည် ပိုမို. ပြည့်စုံသော debug အချက်အလက်လိုအပ်နိုင်သည်။ ဤလုပ်ဆောင်ချက်နှစ်ခုကိုပေါင်းစပ်ခြင်းသည်ပရိုဂရမ်ကွပ်မျက်မှု၏ခြေလှမ်းတစ်ခုစီကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">exampleFunction</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
</span><span><span class="hljs-variable">$trace</span></span><span> = </span><span><span class="hljs-title function_ invoke__">debug_backtrace</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Stack Trace from debug_backtrace:\n"</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$trace</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$index</span></span><span> => </span><span><span class="hljs-variable">$entry</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"#"</span></span><span> . </span><span><span class="hljs-variable">$index</span></span><span> . </span><span><span class="hljs-string">" "</span></span><span> . </span><span><span class="hljs-variable">$entry</span></span><span>[</span><span><span class="hljs-string">'file'</span></span><span>] . </span><span><span class="hljs-string">"("</span></span><span> . </span><span><span class="hljs-variable">$entry</span></span><span>[</span><span><span class="hljs-string">'line'</span></span><span>] . </span><span><span class="hljs-string">"): "</span></span><span> . </span><span><span class="hljs-variable">$entry</span></span><span>[</span><span><span class="hljs-string">'function'</span></span><span>] . </span><span><span class="hljs-string">"()\n"</span></span><span>;
}
</span><span><span class="hljs-keyword">try</span></span><span> {
</span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">Exception</span></span><span>(</span><span><span class="hljs-string">"Custom Exception for Debugging"</span></span><span>);
} </span><span><span class="hljs-keyword">catch</span></span><span> (</span><span><span class="hljs-built_in">Exception</span></span><span> </span><span><span class="hljs-variable">$e</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"\nException Trace using getTraceAsString:\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getTraceAsString</span></span><span>();
}
}
</span><span><span class="hljs-title function_ invoke__">exampleFunction</span></span><span>();
</span></span> <span><span>Stack Trace </span><span><span class="hljs-selector-tag">from</span></span><span> debug_backtrace:
#</span><span><span class="hljs-number">0</span></span><span> /path/to/your/script.</span><span><span class="hljs-built_in">php</span></span><span>(</span><span><span class="hljs-number">9</span></span><span>): </span><span><span class="hljs-built_in">exampleFunction</span></span><span>()
Exception Trace using getTraceAsString:
#</span><span><span class="hljs-number">0</span></span><span> /path/to/your/script.</span><span><span class="hljs-built_in">php</span></span><span>(</span><span><span class="hljs-number">15</span></span><span>): throw new </span><span><span class="hljs-built_in">Exception</span></span><span>(</span><span><span class="hljs-string">'Custom Exception for Debugging'</span></span><span>)
#</span><span><span class="hljs-number">1</span></span><span> {</span><span><span class="hljs-selector-tag">main</span></span><span>}
</span></span>Debugebacktace သည် လက်ရှိပိတ်ဆို့မှု၏ stack အချက်အလက်များကိုကြည့်ရှုခြင်းအားဖြင့် ဥပမာအားဖြင့် 0 င် ရောက်ခြင်းကို / 0 throught.po /your/script.php ၏လိုင်း 9 တွင်ဖော်ပြထားသည်။
GetTraceasString သည် ခြွင်းချက်ကိုဖမ်းယူခြင်းဖြင့်ခြွင်းချက်များဖြစ်ပေါ်သည့်အခါ stack အချက်အလက်များကိုထုတ်ဖော်ပြောဆိုသည်။ ၎င်းသည်ပိုမိုလွယ်ကူစွာ stack stack အချက်အလက်များကိုထောက်ပံ့ပေးသည်။
Debugebacktace : Debugebacktace သည် လက်ရှိ execution process ၏အပြည့်အဝ stack အချက်အလက်များကိုကြည့်လိုပါကအလွန်ကောင်းသောရွေးချယ်မှုဖြစ်သည်။ ၎င်းသည်ဖိုင်လမ်းကြောင်း, လိုင်းနံပါတ်, function parametersters များအပါအ 0 င်အသေးစိတ်ခေါ်ဆိုမှုအချက်အလက်များကိုပေးနိုင်သည်။
GetTraceasString - အကယ်. သင်သည်ခြွင်းချက်များကိုကိုင်တွယ်နေပြီး Concise Stack Stack Information ကိုရယူလိုပါက GetTraceasString သည် ပို. သက်ဆိုင်သည်။ ၎င်းသည်ပြ problems နာများကိုအလျင်အမြန်ရှာဖွေရန်လွယ်ကူစေရန်,
Debugebacktace နှင့် GetTraceStracing ကို ပေါင်းစပ်ခြင်းဖြင့် PHP developer များသည် ပိုမို. ပြည့်စုံပြီးရှင်းလင်းသော debugging အချက်အလက်များကိုရယူနိုင်ပါသည်။ Debugebacktace သည် Call Call inform ကိုအတိအကျခေါ်ဆိုမှုကိုပေးသည်။ နှစ်ခုပေါင်းစပ်မှုက developer များကအမှားအယွင်းများကိုခြေရာခံရန်, ပြ problems နာများကိုပိုမိုထိရောက်စွာရှာဖွေရန်နှင့်ဖွံ့ဖြိုးမှုစွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်ကူညီနိုင်သည်။