2009-08-27 5 views
10

विजुअल स्टूडियो के साथ सी ++ का उपयोग करके, मैं सोच रहा था कि कोई एपीआई है जो मेरे लिए कॉलस्टैक प्रिंट करेगी। अधिमानतः, मैं कॉलस्टैक 5 स्तरों को गहरा प्रिंट करना चाहता हूं। क्या विंडोज़ मुझे ऐसा करने की अनुमति देने के लिए एक साधारण एपीआई प्रदान करता है?कॉलस्टैक के एन स्तर प्रिंट करें?

उत्तर

5

ऐसा करने के कई तरीके हैं।

How to Log Stack Frames with Windows x64

देखें मेरी राय में, सबसे आसान और साथ ही सबसे विश्वसनीय तरीका Win32 एपीआई समारोह है:

USHORT WINAPI CaptureStackBackTrace(
    __in  ULONG FramesToSkip, 
    __in  ULONG FramesToCapture, 
    __out  PVOID *BackTrace, 
    __out_opt PULONG BackTraceHash 
); 

यह FramesToCapture पैरामीटर, अधिकतम कॉल स्टैक गहराई लौटे निर्धारित करता है।

+0

यह कोई प्रतीकात्मक जानकारी उत्पन्न नहीं करता है। पॉइंटर मूल्यों का एक गुच्छा क्या उपयोग है? –

+0

सी/सी ++ कार्यक्रमों में डिफ़ॉल्ट रूप से प्रतीकात्मक जानकारी कभी नहीं होती है। स्टैक डंप पर प्रतीकों को जोड़ने के तरीकों के लिए यहां देखें: http://www.drdobbs.com/architecture-and-design/post-mortem-debugging-revisited/227900186 –

8

ऐसा लगता है कि माइक्रोसॉफ्ट की डीबीजीहेल्प लाइब्रेरी आप जो चाहें कर सकते हैं। अधिक जानकारी के लिए एमएसडीएन पर स्टैकवॉक 64 फ़ंक्शन के दस्तावेज़ों से परामर्श लें। इसके अलावा, this CodeProject article उपयोगी हो सकता है।

0

डीबीजीहेल्प एपीआई के स्टैकवॉक और स्टैकवॉक 64 एपीआई पर एक नज़र डालें।

1

मुझे विश्वास है कि आप इसे अपने डीबगर API (dbghelp) से निकाल सकते हैं।

संबंधित मुद्दे