किसी विधि में अपवाद होने पर सभी स्थानीय चर के मानों का पता लगाने/लॉग करने का कोई सामान्य तरीका? (सी # 3 में)कोई अपवाद होने पर सभी स्थानीय चर का पता लगाने के लिए
उत्तर
उत्तर: पोस्टशर्प (नीति इंजेक्शन) का उपयोग करके, XTraceMethodBoundary विशेषता, ऑनएक्सप्शन ओवरराइड करें। यह सभी विधि इनपुट लॉग करता है और पैरामीटर प्रकार और मान लौटाता है। मैंने पैरामीटर को लॉग करने के लिए एक सरल विधि जोड़ने के लिए PostSharp को संशोधित किया। सही नहीं है लेकिन पर्याप्त अच्छा
private static void TraceMethodArguments(MethodExecutionEventArgs eventArgs)
{
object[] parameters = eventArgs.GetReadOnlyArgumentArray();
if (parameters != null)
{
string paramValue = null;
foreach (object p in parameters)
{
Type _type = p.GetType();
if (_type == typeof(string) || _type == typeof(int) || _type == typeof(double) || _type == typeof(decimal))
{
paramValue = (string)p;
}
else if (_type == typeof(XmlDocument))
{
paramValue = ((XmlDocument)p).OuterXml;
}
else
{ //try to serialize
try
{
XmlSerializer _serializer = new XmlSerializer(p.GetType());
StringWriter _strWriter = new StringWriter();
_serializer.Serialize(_strWriter, p);
paramValue = _strWriter.ToString();
}
catch
{
paramValue = "Unable to Serialize Parameter";
}
}
Trace.TraceInformation("[" + Process.GetCurrentProcess().Id + "-" + Thread.CurrentThread.ManagedThreadId.ToString() + "]" + " Parameter: " + paramValue);
}
}
}
आप मूल रूप से नहीं कर सकते हैं। प्रतिबिंब आपको उदाहरण (और स्थैतिक) चर पर प्राप्त करने देता है लेकिन यदि आप स्थानीय चर लॉग करना चाहते हैं, तो आपको स्पष्ट रूप से ऐसा करना होगा। यह संभव है कि आप प्रोफाइलिंग एपीआई का उपयोग करके थोड़ा बेहतर कर सकें, लेकिन यह एक बहुत चरम कदम होगा।
आप प्रक्रिया की मेमोरी डंप कर सकते हैं क्योंकि यह ढेर और ढेर दोनों को कैप्चर करता है, लेकिन चूंकि आपने प्रश्न को लॉगिंग के रूप में टैग किया है, इसलिए मुझे लगता है कि आप जो खोज रहे हैं वह नहीं है।
हालांकि, आप यह सुनिश्चित करके इस जानकारी की आवश्यकता को कम कर सकते हैं कि आपके तरीके हमेशा छोटे और बिंदु पर हैं। इससे अधिक उपयोगी स्टैक निशान मिलेगा और यह स्थानीय लोगों की संख्या को निरीक्षण करने के लिए सीमित कर देगा।
अपवाद के बिंदु पर प्रक्रिया का मेमोरी डंप बनाने के लिए MiniDumpWriteDump का उपयोग करें। आपको पी/इसे आमंत्रित करना होगा।
- 1. स्विच स्विच होने पर पता लगाने के लिए,
- 2. मॉड्यूल शामिल होने पर पता लगाने के लिए नोडज
- 3. पहुँच सभी स्थानीय चर
- 4. क्या स्क्रीन एप्लिकेशन लॉक होने पर जावा एप्लिकेशन का पता लगाने का कोई तरीका है?
- 5. प्रिंट सभी स्थानीय चर लुआ
- 6. क्या कोई ऑब्जेक्ट लॉक होने का पता लगाने का कोई तरीका है?
- 7. का पता लगाने के लिए Ctrl +
- 8. क्या फ़ाइल निर्भरता "गलती से" संतुष्ट होने पर पता लगाने का कोई तरीका है?
- 9. "सीवी :: स्मृति स्थान पर अपवाद" का कारण क्या है इसका पता लगाने के लिए?
- 10. सभी वैश्विक चर/स्थानीय चर मुद्रण?
- 11. यह पता लगाने के लिए कि कोई फ़ाइल बैच फ़ाइल
- 12. यह पता लगाने के लिए कि कोई उपयोगकर्ता PHP
- 13. स्वाइप पता लगाने के लिए
- 14. स्थानीय चर
- 15. क्या आईओएस पर वर्तमान अग्रभूमि ऐप का पता लगाने में सक्षम होने के लिए कोई निजी एपीआई है?
- 16. का पता लगाने और वाईफाई
- 17. रेल पर रूबी, जावास्क्रिप्ट का पता लगाने
- 18. चैट रूम पर स्पैम का पता लगाने
- 19. बिजली से जुड़े राज्य का पता लगाने के लिए कैसे?
- 20. डिकनेक्टेड डुप्लेक्स मतदान क्लाइंट का पता लगाने के लिए
- 21. हर विधि का पता लगाने के लिए कैसे
- 22. डेटासैप: वैश्विक स्तर पर कनेक्शन हानि का पता लगाने का कोई तरीका है?
- 23. बैटरी पर चलने पर लैपटॉप का पता लगाने के लिए कैसे पता लगाया जाए?
- 24. माउस समर्थन का पता लगाने
- 25. आवाज का पता लगाने
- 26. यह पता लगाने के लिए कि विंडोज
- 27. UIWebView पर टैप का पता लगाने के लिए कैसे करें यदि यह कोई लिंक नहीं है
- 28. किसी एप्लिकेशन के लॉन्च का पता लगाने
- 29. यह पता लगाने के लिए कि कोई वेबसाइट HSTS
- 30. आईफोन MPMoviePlayer नियंत्रण कब प्रकट/गायब होने पर पता लगाने के लिए कैसे?