2013-06-15 6 views
12

मुझे पता चला कि एक .NID असेंबली। डीएल फ़ाइल एक GUID (blog) का उपयोग कर .pdb पर कैसे मानचित्र करता है। जब मैं एक असेंबली में डीबग करता हूं और यह स्रोत कोड मांगता है, अगर मैं किसी फ़ाइल पर नेविगेट करता हूं, तो यह मुझे बता सकता है कि स्रोत कोड मूल से अलग है। यह कैसे पता है? मैं .pdb फ़ाइल को प्रत्येक फ़ाइल के लिए चेकसम रखने की उम्मीद कर रहा था, लेकिन ऐसा प्रतीत नहीं होता है। डीबग जानकारी डंप करने के लिए मैंने पाया सबसे अच्छा टूल dia2dump है। सी ++। पीडीबी फाइलों में एमडी 5 प्रविष्टियां थीं, लेकिन सी #। पीडीबी फाइलें नहीं थीं।विजुअल स्टूडियो कैसे जानता है कि स्रोत फ़ाइल मूल संस्करण से मेल खाती है?

सी डंप ++
dia2dump -f dia2dump.pdb>dia2dump.pdb.files.txt

सी # डंप
-f dia2dump Autofac.pdb>Autofac.pdb.files.txt
dia2dump निर्माण सभी Autofac.pdb>Autofac.pdb.all.txt

वहाँ कुछ मैं है "सब" डंप में चूक गए?

इसे चेकसम का उपयोग करना होगा। अगर मैं Module.cs में एक भी चरित्र बदलने के लिए, मैं:
enter image description here

मैं कहाँ एक .pdb में संदर्भित एक स्रोत फ़ाइल के लिए चेकसम मिल सकती है?

उत्तर

8

एक MD5 चेकसम प्रत्येक स्रोत फ़ाइल के लिए .pdb फ़ाइल में संग्रहीत है। आप ऊपर सवाल का जवाब "नहीं" "क्या आप डिबगर फिर भी इसका उपयोग करना चाहते हैं", यह चेकसम इसके लिए देख रहा था बाहर प्रिंट:

enter image description here

एक हेक्स संपादक का उपयोग करना, आप देख सकते यह निश्चित रूप से .pdb में है। मेरा अगला कार्य यह पता लगाने के लिए है कि इसे प्रोग्रामिक रूप से कैसे पहुंचाया जाए। एक .pdb फ़ाइल के लिए, मैं चाहता हूं कि यह सभी स्रोत फ़ाइल नामों और उनके MD5 चेकसम को वापस कर दे।

enter image description here

+0

मैं pdb को देखकर किया गया है हाल ही में बहुत फ़ाइलें। आप यहां अधिक जानकारी प्राप्त कर सकते हैं। http://blog.ctaggart.com/search/label/pdb –

+0

क्या आपने कभी भी .NET पीडीबी से MD5 हैश प्राप्त करने का कोई तरीका खोजा है? – Petrik

+2

मैंने किया। मैंने सोर्सलिंक नामक एक .NET लाइब्रेरी बनाई जो इसे कर सकती है। https://github.com/ctaggart/SourceLink –

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

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