जब मैं windbg -k
के माध्यम से लक्ष्य पर पाइप ntsd -d
पाइप करता हूं, तो मैं विंडबग में स्रोत कोड शो नहीं बना सकता, लेकिन जब मैं स्थानीय रूप से डीबग करता हूं तो यह काम करता है।मैं ntsd -d के माध्यम से windbg में स्रोत कोड कैसे दिखा सकता हूं?
मैं Winlogon.exe और LSASS.exe के पहले कोड निष्पादन को डीबग करना चाहता हूं। लेकिन यह आसान समस्या को पुन: बनाने के लिए, मैं इस सेटअप बना:
- मैं CrashMe sample application उपयोग करते हैं, स्रोत और पहले से बने प्रतीकों के साथ, सी में कॉपी किया: \ CrashMe दोनों लक्ष्य और मेजबान
- पर मैं विंडोज़ (डीटीडब्लू) संस्करण 6.12.0002.633 हर जगह विंडोज डिबगिंग टूल्स का उपयोग करता हूं।
- लक्ष्य विंडोज एक्सपी एसपी 3, मेजबान विंडोज 7 परम चल रहा है।
- प्रत्येक पथ और सेटिंग्स दोनों मशीनों पर समान है: डीटीडब्ल्यू के पथ और क्रैशमे के पथ।
- मैं हमेशा पूरी तरह से योग्य पथ का उपयोग करता हूं (जैसे c: \ dtw \ ntsd.exe)।
- मैं एक वी एम में एक XP चलाने के लिए, साथ
/noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200
मैं इस आदेश, सी से लॉन्च के साथ स्थानीय स्तर पर डिबग करने में सक्षम हूँ हटा दिया गया: \ CrashMe:
windbg -g -G -srcpath C:\CrashMe -y C:\CrashMe debug\CrashMe.exe
मैं Windows XP शुरू कर सकते हैं आभासी मशीन और यह आदेश से उसे कनेक्ट:
windbg -n -k com:pipe,port=\\.\pipe\com_1,reconnect -srcpath SRV*;C:\CrashMe -y
c:\windows\system32;c:\windows\symbols;C:\CrashMe\debug
लेकिन मैं एक दूरस्थ मशीन डिबग करने के लिए की जरूरत है।
- डिबग के माध्यम से
-server
और-remote
- चल रहे एक प्रक्रिया
- उपयोग छवि फ़ाइल निष्पादन विकल्प (IFEO) में तोड़कर: लक्ष्य पर, मैं इन विकल्पों की है।
इन विकल्पों में से प्रत्येक में मैं प्रतीकों (x crashme!*
काम) देख सकता हूं।
मैं, # 1 (-server
) या # 2 (breakin.exe <pid>
) का उपयोग नहीं कर सकते हैं क्योंकि मैं एक प्रमाणीकरण प्रदाता के स्टार्टअप कोड डीबग करना चाहते हैं, तो मैं ntsd -d
तहत LSASS.exe
शुरू की जरूरत है। मैं इसे चलाने और बाद में संलग्न करने नहीं दे सकता।
मेरी समझ यह है कि मुझे आईएफईओ का उपयोग करने की आवश्यकता है। मैन्युअल रूप से रजिस्ट्री को संशोधित करने की gflags.exe उपयोग करने के बजाय, मैं
c:\dtw\ntsd -d -G -lines -x -y c:\symcache;c:\windows\system32 -n -srcpath C:\CrashMe\
- के लिए निष्पादन योग्य विकल्प सेट मैं आवेदन तोड़ सकते हैं, लेकिन breakpoints मैं सेट नहीं मारा जाता है।
- मैं
.open
कोई फ़ाइल कर सकता हूं, लेकिन मैं ब्रेकपॉइंट सेट करने के लिए फ़ाइल का उपयोग नहीं कर सकता। - मैं x (जांच) किसी भी प्रतीक
- मुझे स्रोत कोड नहीं देख सकता।
मैं windbg -k
के माध्यम से ntsd -d
के तहत चल रहा है एक प्रक्रिया के अपने DLL स्रोत कोड कैसे देखूं?
मैं अभी भी इस सवाल का जवाब नहीं मिला है, लेकिन यह ntsd नहीं किया जा रहा के साथ कुछ हो सकता है एक ग्राफिकल डीबगर? – ixe013
एक संबंधित नोट पर, सटीक उसी सेटअप पर, मैं कर्नेल ड्राइवर को विंडबग में पूर्ण स्रोत कोड के साथ डीबग कर सकता हूं। – ixe013
यदि आप किसी ड्राइवर को डीबग कर सकते हैं तो आपके पास पहले से एक कनेक्शन है जो उपयोगकर्ता मोड कोड (यानी आपका एप्लिकेशन) डीबग करने के लिए भी उपयोग किया जा सकता है। – 0xC0000022L