g++ - Why gcc 4.1 + gcov reports 100% branch coverage and newer (4.4, 4.6, 4.8) reports 50% for "p = new class;" line? -
जब gcc 4.1 (जीसीओवी का उपयोग करके) अगली पंक्ति:
p = नया वर्ग;
को 100% शाखा कवरेज के रूप में रिपोर्ट किया गया है & lt; - यह मेरे लिए ठीक है।
जीसीसी 4.4 और उसके बाद के संस्करण का उपयोग क्यों किया जाता है:
[+ -] पी = नया वर्ग; (50% शाखा कवरेज) ... & lt; - यह 100% को कवर करने के लिए एक समस्या है!
जीसीसी के रूप में उसी शाखा कवरेज की रिपोर्ट करने के लिए क्या मैं नए जीसीसी संस्करणों के लिए कोई अतिरिक्त विकल्प सेट कर सकता हूं? 4.1 के रूप में एकल लाइनों के लिए "p = new class;"।
अग्रिम धन्यवाद।
हल!
हमारे पास कुछ सी / सी ++ फ़ाइलें हैं और बिना किसी अपवाद से निपटने के लिए, इसलिए प्रत्येक कोड ब्लॉक के लिए एलसीओवी / जीसीओवी प्रक्रिया "अपवाद प्रबंधन" है।
सामान्य ब्लॉक के अंदर , उदाहरण के लिए:
int main (शून्य) {... ... ... [+ -] printf ("हैलो \ n"); ...} जीसीओवी रिपोर्ट बताती है कि प्रिंटफ़ लाइन में 50% का "शाखा कवरेज" है - & gt; क्यों?
क्योंकि अपवाद हैंडलिंग सक्षम है !!!
इस समस्या को हल करने के लिए, निर्दिष्ट करें:
-fno-exceptions
जी ++ कमांड लाइन में।
उदाहरण:
जी ++ -O0 --coverage -fno-exceptions -fno-inline ....
धन्यवाद!
Comments
Post a Comment