मैं SIGSEGV
, SIGBUS
और इसी तरह की घातक त्रुटियों को पकड़ने के लिए एक उद्देश्य-सी अनुप्रयोग में सिग्नल हैंडलर का उपयोग कर रहा हूं।एक्सकोड: जीडीबी और सिग्नल हैंडलर
जब ऐसा संकेत उठाया जाता है, तो मैं बैकट्रैक और त्रुटि के बारे में विवरण के साथ एक लॉग फ़ाइल लिख रहा हूं (मुझे पता है कि मुझे पुनर्वित्त के मुद्दे हो सकते हैं, लेकिन यह बात नहीं है)।
इस तरह, मैं अगले लॉन्च पर जान सकता हूं कि एप्लिकेशन क्रैश हो गया है, और यदि मैं एक बग रिपोर्ट भरना चाहता हूं तो मैं उपयोगकर्ता से पूछ सकता हूं।
जब मैं ऐप मैन्युअल रूप से लॉन्च करता हूं तो यह ठीक काम करता है।
लेकिन जब मैं इसे एक्सकोड (जीडीबी के साथ) से चलाता हूं, सिग्नल हैंडलर को नहीं कहा जाता है।
मैंने उन्हें signal
या sigaction
के साथ सेट करने का प्रयास किया है, लेकिन इसमें कोई अंतर नहीं है।
मैंने info signals
के साथ भी जांच की है कि उन संकेतों को pass
पर सेट किया गया है, जिसका अर्थ है कि उन्हें एप्लिकेशन में पास किया जाना चाहिए।
यह एक बड़ा सौदा नहीं है, क्योंकि जब मैं अपने आवेदन को डीबग कर रहा हूं तो मुझे केवल यह समस्या मिली है, लेकिन यह बहुत अच्छा होगा कि वह जीडीबी के साथ भी काम कर रहा है।
क्या किसी ने ऐसी समस्या का अनुभव किया है और हल किया है?
आप इन सिग्नल को gdb में nostop पर सेट करने का प्रयास करना चाहेंगे, इसलिए यह आपके एप्लिकेशन द्वारा प्रबंधित किया जाता है। – steve
मैंने सवाल पूछने से पहले कोशिश की, लेकिन मुझे लगता है कि मैंने गलती की क्योंकि यह काम नहीं कर सका। मैंने आज फिर से कोशिश की, और यह एक आकर्षण की तरह काम कर रहा है। आप इसके साथ एक जवाब भरना चाह सकते हैं, इसलिए मैं इसे स्वीकार कर सकता हूं। धन्यवाद :) – Macmade