लिनक्स पर विशेष रूप से g ++ का उपयोग करके, यह निर्धारित करने का कोई तरीका है कि किसी विशेष कथन के लिए कौन से अधिभारित या टेम्पलेट फ़ंक्शन को चुना गया था?संकलक मुझे बता सकता है कि किस अधिभारित या टेम्पलेट फ़ंक्शन ने इसे चुना है?
अधिक विशेष रूप से, मुझे नहीं लगता कि मुझे जरूरी सभी संभावित विकल्पों को पता है, जो विभिन्न पुस्तकालयों से आने वाली हेडर फाइलों में हो सकती हैं। और अगर मैंने किया, तो मुझे नहीं लगता कि मैं प्रासंगिक कोड को संशोधित कर सकता हूं।
http://stackoverflow.com/questions/1496497/how-can-i-see-parse-tree-intermediate-code-optimization-code-and-assembly-code उपयोगी हो सकता है - यानी, मध्यवर्ती कंपाइलर चरणों को देखें। अगर आप केवल एक बार ऐसा करना चाहते हैं, आप जेनरेट की गई ऑब्जेक्ट फाइलों को देख सकते हैं, और शायद उस कॉल के आस-पास एक "मार्कर" फ़ंक्शन कॉल चिपका सकते हैं जिसे आप समझना चाहते हैं। ऑब्जेक्ट फ़ाइल इंगित करेगी कि फ़ंक्शन का प्रतीक नाम क्या कहलाता है, जिसे फ़ंक्शन हस्ताक्षर (जिसे अद्वितीय होना चाहिए) में वापस सम्मानित किया जा सकता है जिसे आपने बुलाया था। – Yakk
मैंने अक्सर कहा है कि हमें एक संकलन-समय डीबगर की आवश्यकता है ताकि आप टेम्पलेट इंस्टॉलेशन के माध्यम से मूल्यांकन कर सकें क्योंकि उनका मूल्यांकन किया जा रहा है, टेम्पलेट तर्कों को देखकर, यह देखने के लिए कि वास्तव में क्या चल रहा है। –
जब आप कहते हैं * देखें *, आपका क्या मतलब है? क्लैंग सी ++ के लिए पूरी तरह से गठित एएसटी बनाने के लिए कुख्यात है, हालांकि आपको "पुस्तकालय" में सक्षम होने के लिए अपने पुस्तकालयों के चारों ओर एक कार्यक्रम लिखना होगा। –