2010-04-16 6 views
5

मैंने WinDbg में कस्टम थीम सेट अप करने के लिए Tess Ferrandez' blog का पालन किया है।मैं WinDbg में स्टार्टअप पर '.cmdtree' विंडो डॉक कैसे बना सकता हूं?

मैं भी WinDbg के साथ स्वचालित रूप से शुरू करने शुरू कर दिया है -c ".cmdtree c: \ mycmdtree.txt"

यह सही ढंग से एक आदेशों खिड़की के रूप में मेरे cmdtree फ़ाइल को खोलता है, लेकिन मैं इसे ठीक से डॉक करने के लिए नहीं मिल सकता है। समस्या यह प्रतीत होती है कि 'कमांड' विंडो केवल डीएमपी फ़ाइल खोलने के बाद ही खोला जा सकता है, लेकिन एक डीएमपी फाइल खोलने से आप 'बेस' वर्कस्पेस से बाहर निकलते हैं, इसलिए आपके वर्कस्पेस में कोई भी बदलाव सहेजा नहीं जाता है।

कोई विचार?

+0

क्या आपने वास्तव में प्रदान किए गए उत्तर के साथ विंडो डॉकिंग स्थापित करने का प्रबंधन किया था? मेरे पास 2 मुद्दे हैं: ए) यह डॉक करता है, लेकिन मुझे पसंद की स्थिति में नहीं और बी) यह हमेशा दूसरी विंडो को डॉक करता है –

उत्तर

7

यह सरल अनुरोध वास्तव में जटिल हो जाता है। WinDbg की विंडो स्थिति कार्यक्षेत्र में सहेजी जाती है। WinDbg कई डिफ़ॉल्ट कार्यस्थानों है:

  • आधार - इस कार्यक्षेत्र कि इससे पहले कि आप डिबगिंग शुरू प्रयोग किया जाता है (खुला नहीं डंप, कोई exe खुला, कुछ भी संलग्न नहीं)
  • प्रति डंप फ़ाइल - प्रत्येक के लिए आप डंप खोलें, आपके पास इस फ़ाइल के लिए वर्कस्पेस है
  • निष्पादन योग्य फ़ाइल - प्रत्येक निष्पादन योग्य फ़ाइल के लिए आप खोलें।
  • उपयोगकर्ता-मोड - जिसका उपयोग आपने लाइव उपयोगकर्ता के मोड डिबगिंग हैं
  • कर्नेल-मोड - जिसका उपयोग आपने कर्नेल-मोड डिबगिंग
  • प्रति मशीन वास्तुकला कर रहे हैं - 1 64 के लिए, 86 के लिए 1, & 1 IA64 के लिए
  • रिमोट - इस्तेमाल किया है जब आप दूरस्थ डीबगिंग

हैं डिबग के किसी भी प्रकार के लिए (यानी लाइव उपयोगकर्ता के मोड या पोस्टमार्टम डंप विश्लेषण) आप आमतौर पर बेस + आपका प्रकार की सेटिंग के संयोजन के साथ खत्म डीबग का

आप एक डंप फ़ाइल खोलते हैं, तो आप प्रति डंप फ़ाइल आधार + मिलता है आप उपयोगकर्ता के मोड डिबग रहते हैं, तो आप आप गिरी रहते एक x64 मशीन डिबग अगर आधार + उपयोगकर्ता-मोड मिलता है, आप आधार + kernel- मिल मोड + x64

किसी भी दिए गए मोड में आपके द्वारा किए गए सभी परिवर्तन कार्यस्थान में सहेजे गए हैं जो पिछले ओवरलैप किए गए थे। इसका मतलब यह है कि यदि हम एक डंप फ़ाइल खोलते हैं (इसलिए हम बेस + प्रति डंप हैं), सेटिंग्स में किए गए किसी भी बदलाव को इस डंप के लिए वर्कस्पेस में सहेजा जाएगा।

निर्मित कार्यस्थानों और उनके सभी संयोजनों के अलावा, नाम (ग्राहक) कार्यस्थान हैं। ये तब होंगे जब आप फ़ाइल> सहेजें वर्कस्पेस पर जाएं, और अपनी सभी सेटिंग्स को सहेजने के लिए एक नाम दें, जिसे आप -W कमांड लाइन तर्क का उपयोग करके विंडबग के लॉन्च पर सक्षम कर सकते हैं।

अपने प्रश्न पर वापस जाएं। मैं .cmdtree को खोलने के लिए कैसे प्राप्त कर सकता हूं? बेस वर्कस्पेस में आप नहीं कर सकते हैं। खिड़कियों में से कई तभी उपलब्ध होते हैं जब डीबगर निष्क्रिय राज्य में नहीं होता है (इसके आधार कार्यक्षेत्र में)। एक बार जब आप किसी भी सक्रिय राज्य में डीबगर प्राप्त कर लेते हैं, तो ये खिड़कियां उपलब्ध हैं।

आपके द्वारा चलाई जाने वाली समस्या यह है कि आप जिस तरह से इसे चाहते हैं, उसे सब कुछ सेटअप करने के लिए, आपको एक सक्रिय स्थिति में डीबगर होना चाहिए (एक एक्सई ओपन, डंप ओपन, लाइव डिबगिंग) और जब आप जाते हैं आपको विंडो लेआउट को सेव करें, यह भी सहेजने जा रहा है कि आपने जो एक्सई खोला था, या डंप किया था, या लाइव डीबग कर रहे थे।

आपकी सबसे अच्छी शर्त केवल वही करना है जो आप पहले से कर रहे थे, जो केवल रजिस्ट्री में -c का उपयोग करना है (HKEY_CLASSES_ROOT \ WinDbg.DumpFile.1 \ shell \ Open \ command)। इससे आपको डंप पर डबल क्लिक करने की अनुमति मिल जाएगी और हर बार जब आप डंप विश्लेषण कर रहे हों तो इन कमांड लाइन विकल्प प्राप्त करें। फिर आप विंडबग के लिए एक शॉर्टकट बना सकते हैं जिसमें कमांड लाइन भी शामिल है, इसलिए ये सेटिंग्स अन्य प्रकार के डिबगिंग के लिए लागू की जाएंगी।

"c: \ डिबगर \ 64 \ Windbg.exe"

यहाँ ऊपर RegKey से मेरे आदेश पंक्ति है -z "% 1" -Q डब्ल्यू आंतरिक -c ".load winde.dll; .enable_unicode 1; .ignore_missing_pages 1; .logopen/t सी: \ उपयोगकर्ता \ jasone \ logs \ debug.log; एएस। पी। प्रोसेस/पी/आर; एएस .t .thread/p/r; एएस! पी! प्रक्रिया ; एएस! टी! थ्रेड; एएस। एफ। फ्रेम; एएस डीवी डीवी/वी/आई/टी; एएस। एफ। फ्रेम "

यह क्या करता है?

डीबगर लॉन्च करता है, फ़ाइल डंप करने के लिए संलग्न करता है, वर्कस्पेस सेटिंग्स को सहेजने के लिए कोई संकेत नहीं, मेरा "आंतरिक" वर्कस्पेस (एक नामित वर्कस्पेस मैंने बनाया) खोलें, और इन आदेशों को डीबगर एक्सटेंशन, सेटअप वरीयताओं को लोड करने और उपनाम बनाने के लिए चलाएं मेरे जीवन को आसान बनाओ।

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