2009-01-22 9 views
11

मैं किसी तृतीय-पक्ष ढांचे के साथ काम कर रहा हूं, और कोड बहुत खराब है, और मुझे अपवाद मिल रहे हैं जिन्हें मैं समझ नहीं सकता। मैं .NET Reflector का उपयोग करके डिकंपाइल करने में सक्षम था, और अब मैं Deblector का उपयोग करके डीबग करने का प्रयास कर रहा हूं, लेकिन मैं यह भी नहीं समझ सकता कि ब्रेकपॉइंट सेट कैसे प्राप्त करें। इस उपकरण के लिए कोई दस्तावेज क्यों नहीं है?डेबलेक्टर का उपयोग कैसे करें?

इसका उपयोग करने के तरीके के बारे में कुछ भी उपलब्ध नहीं है। अंतर्निहित सहायता केवल कमांड की एक सूची देती है, जिसे मैं समझता हूं, क्योंकि वे मानक डीबगर कमांड हैं ... लेकिन मैं यह नहीं समझ सकता कि यह कैसे काम कर रहा है ताकि मैं कोड के माध्यम से कदम उठा सकूं और मुझे इसकी आवश्यकता है चर भी जांचें।

मैं लंबे समय से गुगल रहा हूं और मुझे लगता है कि ब्लॉग यह कह रहा है कि यह टूल कितना अद्भुत है। खैर, मुझे यकीन है कि अगर मैं इसे काम कर सकता हूं तो यह बहुत अच्छा होगा। प्रलेखन कहां है, या मैं ब्रेकपॉइंट कैसे सेट करूं?

मैं इसे अपनी प्रक्रिया से जोड़ने के लिए प्राप्त कर सकता हूं, लेकिन मैं रोक या कुछ भी नहीं रोक सकता, और जब अपवाद होता है तो यह तोड़ नहीं जाता है, भले ही मैंने उस विकल्प को सक्रिय किया हो।

गंभीरता से ... हमें कुछ दस्तावेज करना चाहिए - मैं उन्हें कहीं भी पोस्ट करूंगा जहां Google पहुंच सकता है।

उत्तर

8

हो सकता है कि यह तुम्हारी मदद करेगा:

सबसे पहले, मैं http://www.codeplex.com/deblector से से DeblectorAddin-1.01-अल्फा (मैं अगर यह बहुत पुराने संस्करणों में इस तरह काम करता है पता नहीं है) का उपयोग कर रहा हूँ।

  • एक प्रक्रिया

      कमांड लाइन में एक [ttach] आदेश के साथ
    • को संलग्न करें::

      इस संस्करण के साथ, यह निम्नलिखित प्रक्रिया के साथ काफी सरल है एक < पिड >

    • टूलबार में संलग्न बटन का उपयोग करना (इसमें एक गियर वाला विंडो)।
  • यदि संलग्नक सफल था (आप इसे कंसोल में देखते हैं, टूल्स-> डिबलेक्टर के साथ सक्रिय) सभी संदर्भित असेंबली लोड की जानी चाहिए। बी [reak] आदेश का उपयोग करते हुए

    • :

    • एक को तोड़ने बिंदु की स्थापना (आप एक ब्रेक बिंदु निर्धारित करने के कार्यक्रम को रोक दिया गया होगा) जैसे बी < नामस्थान। क्लास.फंक्शन > - इसके लिए सहायता बी का उपयोग करने के लिए और विकल्प उपलब्ध हैं।

    • बहुत आसान: ब्रेक बटन (या F9) का उपयोग करें और डेबलेक्टर IL व्यू में एक पंक्ति का चयन करें।

अतिरिक्त उपयोग नोट:

Deblector कमांडलाइन:
कमांड लाइन जवाब नहीं होगा यदि आप वर्तमान में एक प्रक्रिया से जुड़े होते हैं और चल रहे हैं, तो आपको पहले रुकावट या यह ठीक से जवाब नहीं देगा।

64-बिट प्लेटफॉर्म के लिए:
आवेदन 32-बिट अनुप्रयोग के रूप में चलाने के लिए सेट किया जाना चाहिए या इसे से जुड़े नहीं किया जा सकता।

दृश्य स्टूडियो में: परियोजना -> गुण -> का निर्माण मंच लक्ष्य: 86

corflags उपकरण साथ : यह दृश्य स्टूडियो के साथ स्थापित किया जाना चाहिए (दृश्य स्टूडियो कमांड प्रॉम्प्ट का उपयोग करें)।

To set 32-bit mode: corflags <ProgramName> /32BIT+ 
To unset it:  corflags <ProgramName> /32BIT- 

प्रक्रिया आईडी मिल और देखें कि क्या एक कार्यक्रम 32 या 64-बिट मोड में चलता करने के लिए:
Process Explorer उस के लिए बहुत उपयोगी है।

+0

काफी अच्छा है ... मैं अंत में यह पता लगा था, लेकिन मैं इस सवाल के बारे में भूल गया था। शायद यह भविष्य में दूसरों के लिए सहायक होगा! धन्यवाद! – Jasmine

+0

आपका क्या मतलब है "आपने ब्रेक पॉइंट सेट करने के लिए प्रोग्राम को रोक दिया होगा" ?? मैं एक कार्यक्रम को एक ब्रेकपॉइंट सेट करने के साथ कैसे रोक सकता हूं? यह कहने जैसा है "पहले ब्रेकपॉइंट सेट करने के लिए आपको ब्रेकपॉइंट सेट करना होगा"! –

+0

आप वर्तमान स्थिति में एक प्रोग्राम रोक सकते हैं, जिस बिंदु पर प्रोग्राम "ब्रेक" होता है, तब भी इस समय निर्देशक सूचक होने के लिए होता है। – Fionn

0

अब रिफ्लेक्टर प्रो है, जो बस यही करता है। यह decompiles विधानसभाओं को सी # या वीबी.NET में प्रबंधित किया, और आवश्यक पीडीबी बनाता है। फिर आप अपनी पसंद की किसी भी प्रबंधित असेंबली में ब्रेकपॉइंट्स और स्टेप-इन सेट कर सकते हैं।

http://www.red-gate.com/products/reflector/walkthrough.htm

+0

हां, धन्यवाद जेसन! हम इसका उपयोग कर रहे हैं, लेकिन इसके लिए भुगतान करने लायक नहीं मिला। बाहर निकलता है, अब जब हम अपने सिस्टम को प्राप्त कर चुके हैं और चल रहे हैं, तो वास्तव में मुश्किल समस्याएं हल हो जाती हैं और हमें अक्सर विक्रेता कोड को डीबग करने की आवश्यकता नहीं होती है। लेकिन यह जानना अच्छा है कि हम कर सकते हैं – Jasmine

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