C++ प्रोग्राम क्रैश होने पर स्वचालित रूप से स्टैक ट्रेस (stacktrace) कैसे प्राप्त करें?
सभी को नमस्ते! मैं Linux पर GCC कंपाइलर के साथ C++ में कोड लिख रहा हूँ, और मुझे लगातार मुश्किल से पकड़ में आने वाले बग्स को डीबग करने में समस्या हो रही है। प्रोग्राम segmentation fault के साथ क्रैश होता है, लेकिन मैं समझ नहीं पा रहा हूँ कि यह वास्तव में कहाँ हो रहा है, क्योंकि क्रैश बहुत कम और यादृच्छिक स्थानों पर होता है।\n\nमैं पहले से ही assert का उपयोग कर रहा हूँ, लेकिन जब बग मेमोरी करप्शन या बफर ओवरफ्लो से संबंधित होता है तो वे मदद नहीं करते। मैं चाहता हूँ कि किसी भी क्रैश (SIGSEGV, SIGABRT, SIGFPE आदि) पर प्रोग्राम स्वचालित रूप से फंक्शन नाम, फ़ाइल और लाइन नंबर के साथ पूरा स्टैक ट्रेस आउटपुट करे।\n\nयहाँ मेरे कोड का एक उदाहरण है जो क्रैश होता है:\n\n```cpp\n#include \n#include \n\nvoid dangerous_function(int* ptr) {\n *ptr = 42; // यहाँ segfault हो सकता है अगर ptr == nullptr\n}\n\nint main() {\n std::vector vec(10);\n```