के तहत चलते समय प्रोग्राम प्रवाह बदलना क्या यह पता लगाने का कोई तरीका है कि स्मृति में डीबगर चल रहा है?डीबगर
और यहां फॉर्म लोड छद्म कोड पर आता है।
if debugger.IsRunning then
Application.exit
end if
संपादित करें: मूल शीर्षक था
के तहत चलते समय प्रोग्राम प्रवाह बदलना क्या यह पता लगाने का कोई तरीका है कि स्मृति में डीबगर चल रहा है?डीबगर
और यहां फॉर्म लोड छद्म कोड पर आता है।
if debugger.IsRunning then
Application.exit
end if
संपादित करें: मूल शीर्षक था
"स्मृति डीबगर में एक का पता लगा रहा" निम्नलिखित
if (System.Diagnostics.Debugger.IsAttached) {
...
}
दो बातें ध्यान में रखने के इस उपयोग करने से पहले एक आवेदन चल रहा है बंद करने के लिए प्रयास करें डीबगर में:
अब, और अधिक उपयोग की जा करने के लिए है, तो यहां इस पहचान का उपयोग करने के लिए अपने कार्यक्रम राज्य में बदलाव करने से डीबगर में func eval रखने के लिए यदि आप एक कैश प्रदर्शन के कारणों के लिए एक lazily का मूल्यांकन संपत्ति है है।
private object _calculatedProperty;
public object SomeCalculatedProperty
{
get
{
bool debuggerAttached = System.Diagnostics.Debugger.IsAttached;
if (_calculatedProperty == null || debuggerAttached)
{
object property = /*calculate property*/;
if (debuggerAttached)
return property;
_calculatedProperty = property;
}
return _calculatedProperty;
}
}
यह एक अच्छा विचार है - लेकिन यह डीबगर के तहत चलते समय आपके प्रोग्राम के प्रवाह को बदलता है, इसलिए अब आप रिलीज में उपयोग किए जाने वाले कोड को डीबग नहीं कर रहे हैं। आईएमएचओ ज्यादातर मामलों में संपत्ति के गैर-कैश किए गए संस्करण को प्रदान करने के लिए बेहतर होगा (#if DEBUG के अंदर, इसलिए इसे रिलीज़ में नहीं बनाया गया है) कि आप मूल्य की जांच करने के लिए डीबगर में उपयोग कर सकते हैं, जिससे "असली" संपत्ति काम कर रही है डीबग और रिलीज बिल्ड दोनों में एक ही तरह से। –
@ जेसन: हाँ और नहीं। इस मामले में, संपत्ति का मूल्यांकन करने के लिए बुलाए जाने वाले सभी तरीके शुद्ध हैं (जब भी बुलाए जाने पर ध्यान दिए बिना कोई दुष्प्रभाव नहीं), इसलिए मैं वास्तव में यह सुनिश्चित कर रहा था कि यह गुणों के साथ-साथ एप्लिकेशन के परिप्रेक्ष्य से भी हो। –
अधिकांश डिबगर कार्यावधि में एक प्रक्रिया के साथ संलग्न किया जा सकता है:
मैं अपने डिबगर कदम दर के माध्यम से सुनिश्चित करने के लिए मूल्यांकन छोड़ नहीं करता है समय पर इस प्रकार का उपयोग किया है। उस स्थिति में statrup पर डीबगर की जांच बहुत मदद नहीं करेगा। –