建设银行哪个是假网站,手机优化如何弄到100,济宁做网站有哪几家,贵阳专业做网站公司有哪些在开发大型项目时#xff0c;尤其是多线程情况下#xff0c;一般无法使用断点调试#xff0c;这时候将当前函数的调用堆栈打印出来是非常有必要和有效的问题排查手段。 这里记录一段Linux环境下#xff0c;打印函数堆栈的代码。
void get_native_callstack(std::string 尤其是多线程情况下一般无法使用断点调试这时候将当前函数的调用堆栈打印出来是非常有必要和有效的问题排查手段。 这里记录一段Linux环境下打印函数堆栈的代码。
void get_native_callstack(std::string callstack, int level)
{void* buf[128];int size backtrace(buf, sizeof(buf));char** strings backtrace_symbols(buf, size);if (strings ! NULL) {for (int i 0; i size; i) {callstack.append(strings[i]);callstack.append(\n);}free(strings);} else {callstack ;}
}void get_full_callstack(std::string callstack, int level)
{return get_native_callstack(callstack, level);
}使用
std::string callstack;
get_full_callstack(callstack, 10); //打印10层堆栈