
विंडोज डीबगर इंजन के लिए एक PowerShell फ्रंट-एंड।
विंडोज डीबगर इंजन के लिए एक PowerShell फ्रंट-एंड।
क्या आप टैब करके अपनी महिमा के लिए तैयार हैं? त्वरित परिचय के लिए, Getting Started देखें।
यह परियोजना विंडोज डीबगर टीम द्वारा निर्मित, समर्थित या निगरानी नहीं की गई है। जबकि डीबगर टीम अपने API और फ्रंट एंड (windbg, kd, et al) के बारे में प्रतिक्रिया का स्वागत करती है, उनका इस परियोजना से कोई संबंध नहीं है। इस परियोजना से संबंधित बग या प्रतिक्रिया डीबगर टीम को दर्ज न करें।
यह एक वित्त पोषित परियोजना नहीं है: इसके लिए कोई आधिकारिक संसाधन आवंटित नहीं किए गए हैं, और केवल स्वयंसेवकों द्वारा ही काम किया जाता है। इस परियोजना पर कोई उत्पादन निर्भरता न लें जब तक कि आप इसे पूरी तरह से स्वयं समर्थन करने को तैयार न हों। बेझिझक मुद्दे दर्ज करें और पुल रिक्वेस्ट सबमिट करें, लेकिन समझें कि सीमित स्वयंसेवक संसाधनों के साथ, आपके सबमिशन को संभालने में कुछ समय लग सकता है।
यह एक प्रयोगात्मक परियोजना है: यह पूरी तरह से तैयार नहीं है, और आपको अक्सर ब्रेकिंग बदलावों की उम्मीद करनी चाहिए।
उपरोक्त अस्वीकरणों का परिणाम: मैं उच्च मूल्य के लाइव लक्ष्यों पर DbgShell को अटैच करने से बचूंगा।
https://aka.ms/dbgshell-latest
क्या आपने कभी डीबगर में कुछ स्वचालित करने की कोशिश की है? (cdb/ntsd/kd/windbg) आपके लिए वह कैसा रहा?
DbgShell का मुख्य प्रेरणा यह है कि डीबगर में कुछ भी स्वचालित करना बहुत मुश्किल है। आज डीबगर को स्वचालित करने में सहायता के लिए सुविधाएं मौजूद हैं, बिल्कुल। लेकिन मेरी राय में वे लोगों की जरूरतों को पूरा नहीं कर रही हैं।
DbgShell परियोजना का लक्ष्य ऑब्जेक्ट-आधारित PowerShell दुनिया की अच्छाई को डीबगिंग दुनिया में लाना है। जब आप किसी 'ऑब्जेक्ट' को डंप करने के लिए 'dt' करते हैं, तो आपको एक वास्तविक ऑब्जेक्ट मिलना चाहिए। स्क्रिप्टिंग PowerShell स्क्रिप्ट लिखने जितनी आसान होनी चाहिए।
DbgShell परियोजना dbgeng.dll के लिए एक PowerShell फ्रंट-एंड प्रदान करती है, जिसमें शामिल हैं:
कस्टम होस्ट अभी भी एक कमांड-लाइन (conhost.exe-आधारित) प्रोग्राम है (ntsd/cdb/kd के अनुरूप), लेकिन इसे windbg (!DbgShell) से लागू किया जा सकता है।
स्वचालन को बहुत आसान और अधिक शक्तिशाली बनाने के अलावा, यह अन्य चिंताओं को भी संबोधित करेगा, जैसे कि उन लोगों के लिए उपयोग में आसानी जिन्हें डीबगर्स का उपयोग अक्सर नहीं करना पड़ता है। (एक शिकायत जो मैंने सुनी है वह यह है कि "जब मुझे windbg का उपयोग करने की आवश्यकता होती है, तो मैं अपना सारा समय .CHM में बिताता हूँ")
दूसरी ओर, अनुभवी windbg उपयोगकर्ताओं के लिए, एक अन्य लक्ष्य संक्रमण को यथासंभव निर्बाध बनाना है। इसलिए, उदाहरण के लिए, नामस्थान प्रदाता डेटा तक पहुँचने का एकमात्र तरीका नहीं है; आप अभी भी पारंपरिक कमांड जैसे "~3 s", "k", आदि का उपयोग कर सकते हैं।
मैं केवल उस प्रकार की बात नहीं कर रहा हूँ जहाँ आप एक टेक्स्ट एडिटर खोलते हैं और कुछ जटिल करने के लिए एक बड़ी स्क्रिप्ट लिखते हैं—मैं यह भी बात कर रहा हूँ कि कमांड लाइन पर सीधे अपेक्षाकृत सरल चीजें निकालने में सक्षम होना। ऐसी कई स्थितियाँ हैं जहाँ आप थोड़ी सी तर्कशक्ति का उपयोग करना चाहेंगे, लेकिन इतनी बड़ी या पुन: प्रयोज्य नहीं कि आप इसे सहेजना भी चाहें। बस "एक-लाइनर्स" जैसे "यदि खोला जा रहा फ़ाइल उपयोगकर्ता के डेस्कटॉप पर है और फ़ंक्शन Blah स्टैक पर है तो CreateFile पर ब्रेक लगाएँ" निकालना आसान होना चाहिए।
मुझे स्पष्ट होने दें: मुझे PowerShell के साथ "तालमेल बिठाने" में लगभग 4 साल लग गए। मुझे लगता है कि इसमें तीखे किनारे हैं, ऐसे पहलू जो सीधे कठिन हैं, और डिज़ाइन और कार्यान्वयन दोनों में बहुत सारे बग हैं। कभी-कभी यह वास्तव में मुझे परेशान करता है। हालाँकि, PowerShell के लाभ आकर्षक हैं, और मुझे विश्वास दिलाया है कि यह इस परियोजना के लिए उपयोग करने के लिए सबसे अच्छी चीज़ है:
Get-Command, टैब पूर्णता, फ़ाइल सिस्टम जैसे पदानुक्रमित डेटा को उजागर करने की क्षमता, सहायता प्रदान करने और संश्लेषित करने की सुविधाएँ, बहुत अच्छी हैं।dt" करके एक "ऑब्जेक्ट" को "डंप" करें, और वास्तव में एक ऑब्जेक्ट प्राप्त करें। DbgShell ऐसा करता है।cd" करके फ़ाइल सिस्टम, रजिस्ट्री, AD आदि में जा सकते हैं; आप Send-MailMessage, Get-WmiObject, Invoke-WebRequest, Invoke-RestMethod निष्पादित कर सकते हैं, मनमाना प्रोग्राम चला सकते हैं, आदि।