2012-02-23 4 views
8

मेरे पास एम्बेडेड सिस्टम पर पुराने पुराने कोड का एक बड़ा कोड बेस है और दुर्भाग्यवश कोई स्वचालित परीक्षण केस/सूट नहीं हैं। यह कोड को एक खतरनाक कार्य को पुनर्गठन और पुन: सक्रिय करता है।सी फ़ंक्शन कॉल और पैरामीटर ट्रेसिंग - टेस्ट केस और नकली पीढ़ी

मैन्युअल रूप से परीक्षण मामलों को लिखना बहुत समय ले रहा है, इसलिए मैंने सोचा कि इस प्रक्रिया के कम से कम कुछ हिस्सों को स्वचालित रूप से स्वचालित करना संभव है, उदाहरण के लिए सभी फ़ंक्शन कॉल और इनपुट और आउटपुट मानों की रिकॉर्डिंग का पता लगाना। मैं परीक्षण मामलों में इन मानों का उपयोग कर सकता था (यह कम से कम कुछ कार्यों के लिए काम नहीं करेगा)। एकत्रित डेटा के आधार पर नकली कार्यों को बनाना संभवतः संभव होगा।

ऐसे परीक्षण मामले होने से कम खतरनाक गतिविधि को पुन: सक्रिय कर दिया जाएगा।

क्या कोई समाधान है जो पहले से ही ऐसा कर सकता है? अगर मुझे इसे कोड करना पड़ा तो इसे काम करने का सबसे आसान तरीका क्या होगा?

मैं ctags का उपयोग कर समारोह परिभाषाओं को खोजने के लिए, और उन्हें एक समारोह है कि पैरामीटर मान रिकॉर्ड में लपेटकर के बारे में सोचा। एक और संभावना शायद एक जीसीसी संकलक प्लगइन होगा।

+0

न आपको लगता है इस सवाल से संबंधित superuser.com ... ?? –

+2

@ श्रीमान 2: यह एक प्रश्न प्रोग्रामिंग से अत्यधिक संबंधित है, इसलिए यह निश्चित रूप से यहां है। –

उत्तर

1

वहाँ एक जीसीसी विकल्प "-finstrument-कार्यों" है, जो तंत्र आप प्रत्येक funtion के प्रवेश/निकास के लिए अपने स्वयं के कॉलबैक परिभाषित करने के लिए उपयोग कर सकते हैं।

Google इसे और आप कई अच्छे उदाहरण पा सकते हैं।

इस जीसीसी विकल्प की कॉल के साथ [संपादित करें] वापस आप केवल समारोह के प्रवेश/निकास, नहीं पैरामीटर ट्रैक कर सकते हैं। लेकिन कुछ चाल के साथ आप पैरा को ट्रैक भी कर सकते हैं। (ढेर पर परम पाने के लिए वर्तमान फ्रेम सूचक के माध्यम से चलना)। ,

http://linuxgazette.net/151/melinte.html

इसके अलावा, अपने एम्बेडेड सिस्टम पर निर्भर करता है लिनक्स पर आप पैरामीटर (strace रास्ता की तरह दिखाने के लिए ltrace की तरह कुछ की कोशिश कर सकते हैं:

यहाँ कार्यान्वयन के विचार के बारे में एक लेख बात है)। फ़ंक्शन ट्रेस कार्य या तो लिनक्स, ftrace/ust/ltrace/utrace/strace/systemtap/पर उपयोगकर्ता स्पेस या कर्नलस्पेस में काम करता है। वैसे भी, यदि आप कोई हार्ड डिबगिंग कोड नहीं जोड़ते हैं, तो पैरा को सही तरीके से प्रदर्शित करना संभव नहीं है। यदि आप प्रविष्टि/निकास डीबगिंग जानकारी जोड़ने के प्रयासों को स्वीकार करते हैं, तो यह बहुत आसान है।

यहां भी इस समस्या के बारे में एक समान धागा बात है।

Tool to trace local function calls in Linux

+0

यह बहुत दिलचस्प है लेकिन दुर्भाग्य से मैं नहीं देख सकता कि मैं मूल फ़ंक्शन पैरामीटर को एक्सेस और स्टोर करने और मूल्यों को वापस करने में सक्षम कैसे होगा। क्या यह संकलक विस्तार के साथ भी संभव है? – trenki

+0

धन्यवाद। मुझे यह देखना है कि क्या मैं इसे एमआईपीएस प्रोसेसर के लिए काम करने के लिए प्राप्त कर सकता हूं। – trenki

संबंधित मुद्दे