C++ 回溯符号给了我一个错误
此处定义了异常:C++ 回溯符号给了我一个错误,c++,gnu,C++,Gnu,此处定义了异常: class MyException : public std::system_error { using std::system_error::system_error; public: const char* test () const throw () { void * array[30000]; int nSize = backtrace(array, 30000); char ** symbols = backtrace_symbol
class MyException : public std::system_error {
using std::system_error::system_error;
public:
const char* test () const throw () {
void * array[30000];
int nSize = backtrace(array, 30000);
char ** symbols = backtrace_symbols(array, nSize);
for (int i = 0; i < nSize; i++) {
std::cout << symbols[i] << std::endl;
}
free(symbols);
}
};
类MyException:public std::system\u错误{
使用std::system\u error::system\u error;
公众:
常量字符*测试()常量抛出(){
void*数组[30000];
int nSize=回溯(数组,30000);
字符**符号=回溯符号(数组,nSize);
对于(int i=0;itest()
不会返回任何内容
const char* test () const throw () {
void * array[30000];
int nSize = backtrace(array, 30000);
char ** symbols = backtrace_symbols(array, nSize);
for (int i = 0; i < nSize; i++) {
std::cout << symbols[i] << std::endl;
}
free(symbols);
}
const char*test()const throw(){
void*数组[30000];
int nSize=回溯(数组,30000);
字符**符号=回溯符号(数组,nSize);
对于(int i=0;i std::cout该函数不返回任何内容。30000个void指针的堆栈空间为240KB,在某些情况下可能足以使线程的堆栈溢出。您可能希望将其缩减为较小的数字(例如64),因为在大多数情况下,感兴趣的只是前几个条目。
} catch (MyException& e) {
std::cout << "Caught system_error with code " << e.code()
<< " meaning " << e.what() << e.test() << '\n';
}
const char* test () const throw () {
void * array[30000];
int nSize = backtrace(array, 30000);
char ** symbols = backtrace_symbols(array, nSize);
for (int i = 0; i < nSize; i++) {
std::cout << symbols[i] << std::endl;
}
free(symbols);
}