当前位置:网站首页>Debug on pure method is called

Debug on pure method is called

2022-08-02 14:12:00 Soonyang Zhang

#include <iostream>
#include <execinfo.h> //for  backtrace
void dump(void)
{
    int j, nptrs;
    void *buffer[kBacktraceSize];
    char **strings;
    nptrs = backtrace(buffer, kBacktraceSize);
    printf("backtrace() returned %d addresses\n", nptrs);

    strings = backtrace_symbols(buffer, nptrs);
    if (strings == NULL) {
        perror("backtrace_symbols");
        exit(EXIT_FAILURE);
    }
    for (j = 0; j < nptrs; j++)
        printf("[%02d] %s\n", j, strings[j]);

    free(strings);
}
extern "C"
void __cxa_pure_virtual () {
  std::cout<<"pure method is called"<<std::endl;
  dump();
}

 Copy the above code in your own project. When the pure method is called, the dump will output some backtrace. The output hint may be helpful to let you figure out what is wrong.

Reference
[1] C++ 错误 pure virtual method called
[2] “Pure virtual function call”如何调试

原网站

版权声明
本文为[Soonyang Zhang]所创,转载请带上原文链接,感谢
https://blog.csdn.net/u010643777/article/details/118724335