स्टैक ट्रेस मैं ASP.NET अनुप्रयोग, एक ArgumentNullException से उत्पन्न से वापस पाने के लिए, धारणा है कि एक त्रुटि नीचे कोड की अंतिम पंक्ति पर होता है देता है। जहां तक मैं देख सकता हूँ, कि असंभव है, लेकिन अगर JIT Bar
करने के लिए कॉल, जो एक अलग स्टैक ट्रेस में परिणाम होगा बाहर अनुकूलित किया है, यह सब समझा जाएगा। मुझे यकीन है कि यह सी # कंपाइलर नहीं है, क्योंकि सीआईएल दिखता है जैसे मैं उम्मीद करता हूं। क्या यह संभव है कि जेआईटी कंपाइलर ने बार को कॉल हटा दिया हो?क्या .NET JIT कंपाइलर एक विधि कॉल ऑप्टिमाइज़ करेगा?
ग # 4, .नेट 4.0.30319.1, ASP.NET 4.0.30319.1
संपादित करें: मैं इस एक रिलीज विन्यास है, अनुकूलन कोड के साथ उल्लेख किया जाना चाहिए था = पर, केवल pdb-डीबग जानकारी = ।
Stack Trace:
[ArgumentNullException: Value cannot be null. Parameter name: value]
CreateHiddenField(HtmlTextWriter tr, String name, String value) in Foo.cs:129
Foo(IHttpContext context, HtmlTextWriter writer) in Foo.cs:106
private static void Foo(IHttpContext context, HtmlTextWriter writer)
{ // line 103
Bar(writer, AuthorizationServerResponseDetailsHttpRequestParser.RequestSAMLFieldName, context);
Bar(writer, AuthorizationServerResponseDetailsHttpRequestParser.RequestTargetFieldName, context);
// line 106 - blank line in source code.
CreateHiddenField(tr, name, string.Empty); // looks like its here
}
private static void Bar(HtmlTextWriter tr,string name, IHttpContext context)
{ // line 116
#region Sanitation
if (tr == null) { throw new System.ArgumentNullException("tr"); }
if (name == null) { throw new System.ArgumentNullException("name"); }
if (context == null) { throw new System.ArgumentNullException("context"); }
#endregion
CreateHiddenField(tr, name, context.RequestQueryString(name));
}
private static void CreateHiddenField(HtmlTextWriter tr, string name, string value)
{ // line 127
#region Sanitation
if (tr == null) { throw new System.ArgumentNullException("tr"); }
if (name == null) { throw new System.ArgumentNullException("name"); }
if (value == null) { throw new System.ArgumentNullException("value"); }
#endregion
// payload...
}
आप स्टैक ट्रेस दे सकते हैं? जेआईटी एक विधि को रेखांकित कर सकता है अगर यह आवश्यकताओं को फिट करता है - जो इसे स्टैक ट्रेस से 'गायब' कर सकता है ... मुझे लगता है। पहले कोड ब्लॉक में – Joshua
इसके वहां है। मैंने इसे पढ़ने योग्य बनाने के लिए नामस्थान/फ़ाइल नाम हटा दिए। – jasper
आप क्या जानते हैं, मुझे नहीं लगता था कि यह एक छोटा सा निशान था क्योंकि यह बहुत छोटा था। मेरा अनुमान है कि यह रेखांकित किया गया था, लेकिन मुझे नहीं पता कि संकलक 'उचित' स्टैक ट्रेस रखने के लिए कोड को उत्सर्जित करता है या नहीं। क्या स्टैक ट्रेस किसी भी लाइन नंबर या बाइट ऑफ़सेट के साथ आता है? – Joshua