代码拉取完成,页面将自动刷新
#include "StackTrace.h"
int StackTrace::a = 0;
StackTrace::StackTrace(){};
StackTrace::~StackTrace(){};
void StackTrace::show(const char* szBriefInfo)
{
static const int STACK_INFO_LEN = 1024;
static const int MAX_STACK_FRAMES = 12;
void *pStack[MAX_STACK_FRAMES];
static char szStackInfo[STACK_INFO_LEN * MAX_STACK_FRAMES];
char ** pStackList = NULL;
int frames = backtrace(pStack, MAX_STACK_FRAMES);
pStackList = backtrace_symbols(pStack, frames);
if (NULL == pStackList)
return;
strcpy(szStackInfo, szBriefInfo == NULL ? "stack traceback:\n" : szBriefInfo);
for (int i = 0; i < frames; ++i)
{
if (NULL == pStackList[i])
break;
strncat(szStackInfo, pStackList[i], STACK_INFO_LEN);
strcat(szStackInfo, "\n");
}
printf("%s", szStackInfo); // 输出到控制台,也可以打印到日志文件中
}
void StackTrace::backtraceFunc(){
show("111,backtrace is:\n");
auto printtrace1 = [&](const char* str){
show("222,backtrace is:\n");
return [&]{ return show(str); };
};
auto f = printtrace1("333,backtrace is:\n");
f();
}
void StackTrace::testBacktrace(){//测试调用栈信息
backtraceFunc();
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。