मैं कोर डंप उत्पन्न करने में सक्षम होना चाहता हूं लेकिन बाद में प्रक्रिया से बाहर नहीं निकलना चाहता हूं। मुझे निष्पादन जारी रखने की आवश्यकता नहीं है, बस मरना नहीं है। यह एक सी ++ उबंटू प्रक्रिया है।क्या कोर को डंप करना संभव है लेकिन प्रक्रिया से बाहर निकलना संभव नहीं है?
मेरा मानना है कि मैं एक बहुत मानक तरीके से कोर डंपिंग कर रहा हूँ: मैं संकेत() के साथ संकेत हैंडलर की स्थापना के माध्यम से अपमानजनक संकेत पकड़ने, मैं setrlimit (के माध्यम से मूल आकार सीमा) सेट और फिर मैं कोर डंप का संकेत संकेत के साथ() और बढ़ा():
signal(SIGSEGV, OnPosixSignal);
...
void OnPosixSignal(int iSignal)
{
struct rlimit CoreLimit;
CoreLimit.rlim_cur = RLIM_INFINITY;
CoreLimit.rlim_max = RLIM_INFINITY;
setrlimit(RLIMIT_CORE, &CoreLimit);
signal(iSignal, SIG_DFL);
raise(iSignal);
}
वहाँ कुछ मैं कोर डंपिंग के बाद प्रक्रिया से बाहर निकलने की जरूरत नहीं करने के लिए कर सकते हैं?
अग्रिम में एक गुच्छा धन्यवाद!
क्या आपने यह देखा है कि 'gcore' यह कैसे करता है? –
मुझे async-safe फ़ंक्शंस की सूची में 'setrlimit() 'नहीं मिला है। क्या आप वाकई सिग्नल हैंडलर में कॉल करना एक अच्छा विचार है? – EOF
'coredumper' लाइब्रेरी आपका मित्र होगा। –