पर एक मूल निवासी कैसे करें। .NET Framework के लिए अप्रबंधित API का उपयोग करते समय .NET प्रक्रिया में प्रोफ़ाइल को प्रोफाइल करने के लिए, क्या आईएल निर्देश पॉइंटर को देखना संभव है जो संबंधित है StackSnapshotCallback फ़ंक्शन को प्रदान किया गया मूल निर्देश सूचक?आईएल निर्देश पॉइंटर इन-प्रोसेस
जैसा कि शायद स्पष्ट है, मैं वर्तमान स्टैक का स्नैपशॉट ले रहा हूं, और स्टैक डंप में फ़ाइल और लाइन नंबर की जानकारी प्रदान करना चाहता हूं। प्रबंधित स्टैक एक्सप्लोरर यह ISymUnmanagedMethod::GetSequencePoints
से पूछताछ करके करता है। यह बहुत अच्छा है, लेकिन अनुक्रम बिंदु ऑफ़सेट से जुड़े हुए हैं, और मैंने अब तक यह माना है कि ये विधि की शुरुआत (इंटरमीडिएट भाषा में) से ऑफसेट हैं।
अपने ब्लॉग पोस्ट Profiler stack walking: Basics and beyond पर एक फॉलो-अप टिप्पणी में, डेविड ब्रूमन इंगित करता है कि यह मानचित्रण ICorDebugCode::GetILToNativeMapping
का उपयोग करके हासिल किया जा सकता है। हालांकि, यह आदर्श नहीं है क्योंकि इस इंटरफ़ेस को किसी अन्य, डीबगर प्रक्रिया से मेरी प्रक्रिया को जोड़ने की आवश्यकता है।
मैं उस चरण से बचना चाहता हूं क्योंकि मैं इन स्नैपशॉट्स को लेते हुए दृश्य स्टूडियो डीबगर के भीतर से अपना एप्लिकेशन चलाने में सक्षम होना चाहता हूं। यह आउटपुट विंडो में लाइन नंबर पर क्लिक करना और प्रश्न में कोड पर जाना आसान बनाता है।
कार्यक्षमता संभव है .... आप प्रबंधित कोड के अंदर इच्छा पर एक लाइन-क्रमांकित स्टैक ट्रेस थूक सकते हैं, केवल एक ही सवाल है, यह सुलभ है। इसके अलावा, मैं System::Diagnostics::StackTrace
या System::Environment::StackTrace
कार्यक्षमता का उपयोग नहीं करना चाहता क्योंकि कारणों से, मुझे स्टैक के वास्तविक डंप में देरी करने की आवश्यकता है .... इसलिए विधि नामों और कोड स्थान के समाधान के लिए लागत को बचाने के लिए वांछनीय है ... देशी और प्रबंधित फ्रेम intermix करने की क्षमता के साथ।
यहां छोटी गलती - पहले कोड खंड के लाइन 17 में frame.pc "instructPtr" होना चाहिए, जो आपके DoStackSnapshot कॉलबैक का UINT_PTR आईपी पैरामीटर है। धन्यवाद एक गुच्छा स्टीवन! आपने वास्तव में मेरी मदद की :) –
एचआरएम ... अच्छा बिंदु। मुझे याद नहीं है कि frame.pc कहाँ से आया था। शायद मैं यह स्पष्ट करने की कोशिश कर रहा था कि क्या इस्तेमाल किया जा रहा था। किसी भी मामले में, जहां से यह आता है, इस बारे में एक टिप्पणी के साथ वास्तविक मूल्य समझदार लगता है। संपादित। सूचक के लिए धन्यवाद। – Steven