2009-07-15 8 views
10

में CreateProcess पर ब्रेकपॉइंट जोड़ सकता हूं क्या मैं विजुअल स्टूडियो में विंडोज़ CreateProcess API पर ब्रेकपॉइंट जोड़ सकता हूं जैसे कि मैं विंडबग में कर सकता हूं?क्या मैं वीएस

उत्तर

15

हाँ - गो "डीबग/नई ब्रेकप्वाइंट/समारोह में तोड़ ..." और इस पेस्ट:

{,,kernel32.dll}[email protected] 
समारोह बॉक्स में

जो यूनिकोड बिल्ड मानता है - एएनएसआई बिल्ड के लिए A के साथ W को प्रतिस्थापित करें।

स्पष्टीकरण का थोड़ा सा: @40 टुकड़ा stdcall कॉलिंग सम्मेलन का हिस्सा है, और फ़ंक्शन के पैरामीटर के बाइट्स की संख्या देता है। Win32 में, यह पैरामीटर की संख्या लगभग 4 गुना है। अंडरस्कोर भी स्टडकॉल कॉलिंग सम्मेलन का हिस्सा है।

एक संबंधित नोट: कभी कभी के रूप में डिबगर द्वारा देखा समारोह के नाम पर अपने असली नाम से अलग है - एक उदाहरण के लिए इस ब्लॉग पोस्ट को देखने का तरीका सही नाम का उपयोग करने लगता है: Setting a Visual Studio breakpoint on a Win32 API function in user32.dll

+4

बेहतर करने के लिए दोनों पर तोड़ो। CreateProcessW के फंकी गैर-कॉन्स व्यवहार के कारण, यहां तक ​​कि यूनिकोड एप्लिकेशन भी CreateProcessA को कॉल कर सकते हैं। CreateProcess मैक्रो अंतर्निहित दो फ़ंक्शन घोषणाओं को छिपाता नहीं है, इसलिए वे कॉल करने योग्य रहते हैं। यह अन्य फ़ंक्शन जोड़े के लिए समान मैक्रोज़ पर भी लागू होता है। – MSalters

+2

ध्यान देने योग्य एक अतिरिक्त बात यह है कि आपको पहले 'kernel32.dll' प्रतीकों को डाउनलोड करना होगा। आप डीबग/विंडोज/मॉड्यूल के अंदर संदर्भ मेनू से ऐसा कर सकते हैं। – ulidtko

+0

{,,,} वाक्यविन्यास का स्पष्टीकरण यहां है: https://msdn.microsoft.com/en-us/library/wztycb7f(v=vs.100).aspx ध्यान दें कि किसी भी कारण से आलेख मौजूद नहीं है बनाम -2010 से अधिक दृश्य स्टूडियो –