मैं सी ++ में एक डीएलएल प्लगइन प्रोफाइल करना चाहता हूं। मेरे पास स्रोत तक पहुंच है (लेखक/प्रबंधक होने के नाते) और उन्हें संशोधित कर सकते हैं (यदि उपकरण के लिए आवश्यक हो)। मेरे पास जो होस्ट नहीं है वह होस्ट प्रोग्राम का स्रोत/प्रतीकों/आदि है जो डीएलएल को कॉल कर रहा है। मेरे पास प्लगइन बनाने के लिए केवल हेडर की आवश्यकता है। ग्राहक से कार्रवाई पर डीएल लागू किया जाता है।एक डीएलएल प्लगइन प्रोफाइलिंग
कोड प्रोफाइलिंग के लिए आगे बढ़ने का सबसे अच्छा तरीका क्या है? डीएल के चारों ओर एक निष्पादन योग्य "लपेटना" यथार्थवादी नहीं है और यह उपयोगी नहीं होगा क्योंकि प्लगइन में मैं मेजबान से कुछ फ़ंक्शन कॉल कर रहा हूं और मुझे उन पथों को प्रोफ़ाइल करने की आवश्यकता है, एक रैपर प्रदर्शन को छोड़ देगा। Kieren जॉनसन की टिप्पणी के बाद
संपादित करें: आदर्श रूप में मैं सिर्फ डिबगर तरह भरी हुई dll में हुक चाहते हैं (चल मेजबान प्रक्रिया के लिए संलग्न है और आवश्यकतानुसार dll में कहीं एक ब्रेकपाइंट रखने) करने में सक्षम है। क्या यह संभव है? यदि नहीं, तो मैं पूछने के लिए AIX के तहत एक ही कार्य के लिए सुझाव/उत्तर प्रदान के लिए 2010
बोनस अंक क्यों :-)
मैं दृश्य स्टूडियो के TFS संस्करण का उपयोग कर रहा एक और सवाल पूछने के लिए की आवश्यकता होगी (आह , कई वातावरण की खुशी!)।
आप किस प्रोफाइलर का उपयोग कर रहे हैं? क्या आपने बस होस्ट प्रोग्राम चलाने की कोशिश की? यदि आपके पास प्लगइन के लिए प्रतीक हैं, तो यह अभी भी काम करना चाहिए .. –
वीएस -2010 में अंतर्निहित प्रोफाइलर। मैं मेजबान कार्यक्रम की प्रारंभ प्रक्रिया को खोलने की कोशिश करूंगा लेकिन यह बिल्कुल आसान नहीं है क्योंकि इसे कई अन्य कार्यक्रम/कनेक्शन की आवश्यकता है। यह एक साधारण foo.exe नहीं है ... मुझे थोड़ी देर की आवश्यकता होगी, इसलिए मैंने यह जांचने के बारे में सोचा कि लोड किए गए डीएल में "हुक" करने का कोई तरीका था, जैसे डीबगर सक्षम है। – Francesco
अपने समाधान में अपने डीएलएल के लिए प्रोफाइलर सक्षम करें, अपने निष्पादन योग्य फ़ोल्डर में सभी प्रोग्राम पेड़ कॉपी करें या प्रोग्राम फ़ोल्डर में अपना डीएल डाल दें। foo.exe होने के लिए निष्पादन योग्य फ़ाइल नाम सेट करें और प्रोफाइलर चलाएं ... – neagoegab