2012-01-05 14 views
5

यह एक बग था जिसे मैंने अभी पाया! हुर्रे। बग एक गलत डाउनकास्टिंग के कारण था, और वास्तव में मैं dynamic_cast के बजाय static_cast का उपयोग कर रहा था।क्या अमान्य डाउनकास्टिंग के कारण WinDbg स्मृति ढेर भ्रष्टाचार का पता लगाने में सक्षम है?

मेरा आवेदन बहुत बड़ी और बहु-क्रम है और अन्य अनुप्रयोगों के साथ सूचना का आदान। तो डिबगिंग बहुत मुश्किल है। मैं परिणाम के बिना WinDbg, GFlags, और Application Verifier उपयोग करने के लिए कोशिश की है। निश्चित रूप से क्योंकि मुझे नहीं पता कि इन उपकरणों का उपयोग कैसे करें।

, गलत downcasting की वजह से एक स्मृति ढेर भ्रष्टाचार को खोजने के लिए संभव यह है WinDbg जैसे उपकरणों के उपयोग के साथ? यदि हां, तो कैसे?

+0

प्रकट कर सकते हैं क्या एक बग तुम सिर्फ मिला था? इस पोस्ट को कोई मतलब नहीं है। –

+0

@ लाइटनेस: आउच, वास्तव में? – Guillaume07

+0

वास्तव में क्या? आपके पहले दो वाक्यों का कोई मतलब नहीं है। वे कुछ बग के बारे में बात करते हैं जिन्हें आपने प्रश्न में पेश नहीं किया है। क्या बग? –

उत्तर

9

Windbg! ढेर -s -v आदेश एक भ्रष्ट ढेर

0:008> !heap -s -v 

    Heap  Flags Reserv Commit Virt Free List UCR Virt Lock Fast 
       (k)  (k) (k)  (k) length  blocks cont. heap 
----------------------------------------------------------------------------- 
.ERROR: Block 001842e8 previous size 0 does not match previous block size 4 
HEAP 00140000 (Seg 00140640) At 001842e8 Error: invalid block Previous 
1

संपादित करें: टिप्पणियाँ यह स्पष्ट है कि गैर- Windows विकल्प व्यवहार्य नहीं हैं। उस मामले में मुझे पहले शुद्धिक के साथ शुभकामनाएं मिलीं, लेकिन दुर्भाग्यवश यह $$$ है। हालांकि मैं अन्य विंडोज मेमोरी जांच उपकरण से परिचित नहीं हूं।

इस विशेष मामले के संबंध में, किसी भी समय आप पाते हैं अपने आप को downcasting, कम से कम एक वैकल्पिक इंटरफेस या डिजाइन कि आवश्यकता को दूर कर सकता है के बारे में एक मिनट के बारे में सोच खर्च करते हैं। कंपाइलर त्रुटियों और चेतावनियां, और एक ठोस डिजाइन बहुत सारी बग पा सकते हैं जो अन्यथा खोजने के लिए घंटों लगते हैं।

+0

विंडोज उपयोगकर्ता के लिए valgrind की सिफारिश? – PlasmaHH

+0

@Mark बी: तो तुम इस बात की पुष्टि के साथ valgrind इनपुट में अनुप्रयोग के डंप करने के लिए जब यह दुर्घटना यह संभव है और उत्पादन पर जो समस्या का कारण कोड की लाइन? – Guillaume07

+0

@PlasmaHH: हाँ वास्तव में, लेकिन मुझे लगता है कि विंडोज – Guillaume07

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

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