मैं एक बहुत ही जटिल सी ++ फ़ंक्शन डिबग कर रहा हूं जो मुझे कुछ इनपुट के तहत कुछ अप्रत्याशित परिणाम देता है। मैं अलग-अलग इनपुट के तहत कोड निष्पादन की तुलना करना चाहता हूं ताकि मुझे पता चल सके कि कौन सा हिस्सा मुझे बग का कारण बनता है। उपकरण जो कोड निष्पादन पथों की तुलना कर सकता है वह है जिसे मैं ढूंढ रहा हूं। अगर ऐसा उपकरण मौजूद है तो कृपया मुझे बताएं। या अन्यथा अगर कुछ तकनीकें हैं तो मैं एक ही काम करने के लिए नियोजित कर सकता हूं?विभिन्न इनपुट के तहत एक ही कोड के निष्पादन पथ की तुलना करें
मेरी समस्या का ठोस रूप से वर्णन करने के लिए, यहां मैं एक प्रदूषित उदाहरण का उपयोग कर रहा हूं।
double payTax(double income)
{
if (income < 10000)
return noTax();
else if (10000 < income < 30000)
return levelOneTax();
else if (30000 < income < 48000)
return levelTwoTax();
else
return levelThreeAboveTax();
}
को देखते हुए इनपुट 15000, समारोह कर की सही मात्रा की गणना करता है, लेकिन किसी भी तरह इनपुट 16000 एक गलत कर राशि देता है इस स्यूडोकोड में समारोह है कहो,। माना जाता है कि इनपुट 15000 और 16000 फ़ंक्शन को उसी निष्पादन पथ के माध्यम से जाने का कारण बनता है; दूसरी ओर, यदि वे अलग-अलग पथ जाते हैं, तो फ़ंक्शन के भीतर कुछ गलत हो जाना चाहिए। इसलिए, एक उपकरण जो निष्पादन पथ की तुलना करता है वह पर्याप्त जानकारी प्रकट करेगा जो मुझे तुरंत बग की पहचान करने में मदद कर सकता है। मैं इस तरह के एक उपकरण की तलाश में हूँ। विजुअल स्टूडियो 2010 के साथ पसंदीदा रूप से संगत। यह बेहतर होगा यदि ऐसा टूल चर के मान भी रखता है।
पीएस डीबगिंग आखिरी चीज है जो मैं करना चाहता हूं क्योंकि जिस कोड बेस के साथ मैं काम कर रहा हूं वह मामूली पेटेक्स उदाहरण से काफी बड़ा और जटिल है।
कृपया मदद करें। धन्यवाद।
क्या आपके पास विजुअल स्टूडियो 2010 है और चल रहा है? यदि हां, तो क्या आपने फ़ंक्शन 'payTax()' की शुरुआत में ब्रेकपॉइंट डालने का प्रयास किया है, और फिर प्रोग्राम को डीबगर में चला रहा है? –
हां। जैसा कि मैंने कहा है, वास्तविक कार्य प्रत्याशित अपमान से हजार गुना अधिक जटिल है। मैं डीबगर का उपयोग कर सकता था, लेकिन अगर मेरे पास ऐसा उपकरण था तो मुझे अधिक समय लगेगा।@Dan Nissenbaum – Shuo
पूर्ण विवरण के बिना एक अच्छा जवाब देना मुश्किल है, लेकिन डीबगर केवल मूल ब्रेकपॉइंट्स और सिंगल-स्टेपिंग से अधिक करता है। जब आप निष्पादन किसी पूर्व शर्त के साथ कहीं अप्रत्याशित होते हैं तो आप ट्रेस करने के लिए सशर्त ब्रेकपॉइंट्स का उपयोग कर सकते हैं। आपके उदाहरण के लिए, ब्रेकपॉइंट केवल इनपुट की एक निश्चित सीमा पर ही आग लग सकता है। – JasonD