2011-03-22 8 views
12

मेरे पास एक सी ++ प्रोग्राम है। प्रोग्राम में कहीं भी (पुन: उत्पन्न करने के लिए कड़ी मेहनत, लेकिन पुनरुत्पादन योग्य) एक नुकीले परिणामस्वरूप एक फ्लोट बीइंग में नाक को सेट किया जाता है। चूंकि एक नाइट में एनएएन परिणाम शामिल एक फ्लोटिंग प्वाइंट ऑपरेशन के बाद से, यह तेजी से फैलता है।डीएएनजी फ़्लोटिंग पॉइंट नंबर का उत्पादन होने पर डीबगर को रोकना

क्या कोई तरीका है कि मैं कंपाइलर (जीसीसी 4.4) या डीबगर (जीडीबी) सेट कर सकता हूं ताकि एक फ्लोटिंग पॉइंट ऑपरेशन नैन में न हो? यह बेहद उपयोगी होगा।

धन्यवाद! नाथन

पीएस: इससे कोई फर्क नहीं पड़ता: मैं उबंटू लिनक्स 10.10 के तहत काम कर रहा हूं।

+0

आप चल बिन्दु अपवाद सक्षम हो सकता है सिर्फ डिबग मोड में। अपने सीआरटी की जांच करें, यह सुनिश्चित न करें कि यह आपके साथ कैसे किया जाता है। –

+0

यह भी देखें http://stackoverflow.com/questions/3615724/how-to-trace-a-nan-in-c – Riot

उत्तर

15

आप चल बिन्दु अपवाद सक्षम सकता है - glibc Control Functions देखते हैं - तो आप मिल जाएगा एक SIGFPE अपने NaN मूल्य का उत्पादन किया है जब

+9

feenableexcept (FE_INVALID | FE_OVERFLOW); चाल है, धन्यवाद! – Nathan

+1

उत्तर सही है। हालांकि ओएसएक्स पर आपको इस तरह की कुछ चाहिए http://www-personal.umich.edu/~williams/archive/computation/fe-handling-example.c क्योंकि feenableexcept() उपलब्ध नहीं है। – fferri

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