Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

जीसीसी सी ++ प्रोग्राम क्रैश होने पर स्वचालित रूप से स्टैकट्रैक कैसे उत्पन्न करें?

लिनक्स के लिए और हम सी/सी ++ कोड संकलित करने के लिए जीसीसी का उपयोग कर सकते हैं। यह कंपाइलर glibc लाइब्रेरी का उपयोग करता है। हम त्रुटि का पता लगाने के लिए बैकट्रेस () फ़ंक्शन का उपयोग कर सकते हैं। यह फ़ंक्शन execinfo.h हेडर फ़ाइल के अंदर मौजूद है। इस उदाहरण में, हम स्टैक ट्रेस सुविधा का उपयोग करके सेगमेंटेशन गलती त्रुटि प्रदर्शित करने जा रहे हैं।

उदाहरण

#include <iostream>
#include <execinfo.h>
#include <signal.h>
#include <cstdlib>
#include <unistd.h>
using namespace std;
void error_handler(int sig) {
   void *array[10];
   size_t size;
   size = backtrace(array, 10); //get the void pointers for all of the entries
   cout << "Error: signal "<< sig <<":\n"; //display error signal
   backtrace_symbols_fd(array, size, STDERR_FILENO);
   exit(1);
}
void invalid_index() {
   int *ptr = (int*) - 1;
   cout << *ptr << endl; // segmentation error
}
void func1() {
   invalid_index();
}
void func2() {
   func1();
}
int main(int argc, char **argv) {
   signal(SIGSEGV, error_handler); // use handler to print the errors
   func2(); // this will call all other function to generate error
}

आउटपुट

Error: signal 11:
./a.out(+0x825)[0x5579a31d7825]
/lib/x86_64-linux-gnu/libc.so.6(+0x3ef20)[0x7f7689009f20]
./a.out(+0x880)[0x5579a31d7880]
./a.out(+0x8a1)[0x5579a31d78a1]
./a.out(+0x8ad)[0x5579a31d78ad]
./a.out(+0x8d5)[0x5579a31d78d5]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x7f7688fecb97]
./a.out(+0x71a)[0x5579a31d771a]

  1. C++ प्रोग्राम का उपयोग करके प्रोग्राम कैसे लॉन्च करें?

    यहां हम देखेंगे कि कुछ तृतीय-पक्ष एप्लिकेशन जैसे नोटपैड या सी ++ प्रोग्राम का उपयोग करके कुछ भी कैसे शुरू किया जाए। यह प्रोग्राम बहुत सरल है, हम इस कार्य को करने के लिए कमांड प्रॉम्प्ट कमांड का उपयोग कर सकते हैं। हम सिस्टम () फ़ंक्शन के अंदर एप्लिकेशन का नाम पास करेंगे। यह उसके अनुसार खुल जाएगा। उद

  1. C++ में हैलो वर्ल्ड प्रोग्राम कैसे लिखें?

    हैलो वर्ल्ड प्रोग्राम चलाने के लिए, आपको निम्न चरणों का पालन करना होगा - C++ प्रोग्राम लिखें अब जब आपके पास एक कंपाइलर स्थापित हो गया है, तो यह एक C++ प्रोग्राम लिखने का समय है। आइए प्रोग्रामिंग उदाहरण के प्रतीक के साथ शुरू करते हैं, यह हैलो वर्ल्ड प्रोग्राम है। हम इस उदाहरण में C++ का उपयोग करके he

  1. सी ++ में एक साधारण प्रोग्राम कैसे बनाएं?

    C++ में एक बहुत ही सरल प्रोग्राम प्राप्त करने के लिए, आपको पहले इसे सेट करना होगा और फिर इसके लिए प्रोग्राम बनाना होगा। निम्न चरणों की सूची है कि एक बहुत ही सरल प्रोग्राम का उपयोग करके C++ में कैसे आरंभ किया जाए। C++ कंपाइलर प्राप्त करें यह पहला कदम है जिसे आप C++ में प्रोग्राम सीखना शुरू करने से पह