2009-10-30 18 views
7

का उपयोग कर सी में डिबगिंग यूनिट टेस्ट मैं अपने सी अनुप्रयोग के लिए check इकाई परीक्षण ढांचे का उपयोग करने की कोशिश कर रहा हूं। लेकिन मैं क्योंकि दो अंक के साथ डीबगर (gdb) का उपयोग नहीं कर सकते हैं:चेक

  • पहले, कुछ जटिल मैक्रो (START_TEST और END_TEST) का उपयोग की जाँच करें और डीबगर के बीच मेरे कोड में एक ब्रेकपाइंट डाल करने के लिए मुसीबत है इन दो मैक्रोज़ (वास्तव में, मैं एक सॉफ्टवेयर ब्रेकपॉइंट डाल सकता हूं लेकिन इसे कभी भी जीडीबी द्वारा नहीं देखा जाता है)

  • दूसरा, बाधा के व्यवहार को फिर से परिभाषित करके कुछ प्रकार के अपवादों को परिभाषित करने की जांच करें। इसलिए, जब मैं हार्डवेयर ब्रेकपॉइंट डालने का प्रयास करता हूं, तो परीक्षण विफल हो जाता है और बाहर निकलता है क्योंकि चेक मेरे हार्डवेयर की विफलता के रूप में हार्डवेयर ब्रेकपॉइंट पर विचार करता है।

क्या कोई भी इस समस्या से पहले से ही सामना कर चुका है और समाधान है?

उत्तर

11

देखो:

चेक सामान्य रूप से कांटे एक अलग पता स्थान बनाने के लिए। यह पूरे परीक्षण कार्यक्रम को लेने के बजाय, सिग्नल या प्रारंभिक निकास को पकड़ा और रिपोर्ट करने की अनुमति देता है, और आमतौर पर बहुत उपयोगी होता है। हालांकि, जब आप डीबग करने का प्रयास कर रहे हैं कि सेगमेंटेशन गलती या अन्य प्रोग्राम त्रुटि क्यों हुई, तो फोर्किंग ने डीबगिंग टूल का उपयोग करना मुश्किल बना दिया।

0

TAP (टेस्ट कुछ भी प्रोटोकॉल) आज़माएं ... इसे कार्यान्वित करने, जहाज और डीबग करने के लिए बहुत आसान है। इसे valgrind बनाने के लिए भी बहुत आसान है और gdb के साथ नाइसर खेलना आसान है। no-fork mode पर

+0

2016-09-23 तक, [http://ccan.ozlabs.org/info/tap.html ](http://ccan.ozlabs.org/info/tap.html) के लिए टीएपी लिंक है 404. प्राथमिक वेबसाइट, ozlabs.org, अभी भी चल रही है, लेकिन मैं टीएपी जानकारी का पता नहीं लगा सकता। विकिपीडिया में [टेस्ट कुछ भी प्रोटोकॉल] (https://en.wikipedia.org/wiki/Test_Anything_Protocol) के लिए एक प्रविष्टि है; सी, सी ++, जावा, जावास्क्रिप्ट, पायथन, पर्ल इत्यादि में कार्यान्वयन के साथ [टेस्ट कुछ भी प्रोटोकॉल] (https://testanything.org/) के लिए एक वेबसाइट है। –

5

दरअसल, आप फोर्क-मोड का भी उपयोग कर सकते हैं।

gdb दो दिलचस्प कांटा व्यवहार से संबंधित विकल्प हैं: - detach-on-fork (गलत करने के लिए इस सेट)
-
follow-on-fork (या तो माता-पिता या बच्चे, मैं हमेशा बच्चे को लेने)

यह gdb बच्चे का पालन कर देगा प्रक्रिया। जब बच्चे की प्रक्रिया समाप्त हो जाती है, तो आपको inferior कमांड का उपयोग कर मैन्युअल रूप से मूल प्रक्रिया में वापस जाना होगा।

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