首页 > 其他分享 >backtrace跟踪错误

backtrace跟踪错误

时间:2023-10-19 20:47:53浏览次数:30  
标签:nptrs dump 错误 buffer backtrace void 跟踪 strings

 

#include <execinfo.h>
#include <iostream>
#include <signal.h>

void map_dump(void) {
char buff[64] = {0x00};
sprintf(buff, "cat /proc/%d/maps", getpid());
system((const char *)buff);
}

// 打印堆栈信息
void trace_dump(void) {
int j, nptrs;

void *buffer[100];
char **strings;

#define SIZE 1024
nptrs = backtrace(buffer, SIZE);
printf("backtrace() returned %d addresses\n", nptrs);

/* The call backtrace_symbols_fd(buffer, nptrs, STDOUT_FILENO)
would produce similar output to the following: */

strings = backtrace_symbols(buffer, nptrs);
if (strings == NULL) {
perror("backtrace_symbols");
exit(EXIT_FAILURE);
}

for (j = 0; j < nptrs; j++)
printf("%s\n", strings[j]);

free(strings);
}

void signal_handler(int signo) {

map_dump();
printf("\n=========>>>catch signal %d <<<=========\n", signo);
printf("Dump stack start...\n");
trace_dump();
printf("Dump stack end...\n");
signal(signo, SIG_DFL); /* 恢复信号默认处理 */
raise(signo); /* 重新发送信号 */
}

void trigger_crash() {
int *p = nullptr;
*p = 0;
}

int main(int argc, char *argv[]) {

signal(SIGSEGV, signal_handler);
signal(SIGABRT, signal_handler);
signal(SIGINT, signal_handler);

trigger_crash();

// done:
return 0;
}

 

标签:nptrs,dump,错误,buffer,backtrace,void,跟踪,strings
From: https://www.cnblogs.com/jiyong3998/p/17775567.html

相关文章

  • vs发生生成错误怎么解决
    在VisualStudio(VS)中,生成错误(builderror)通常表示代码中存在一些问题,导致编译器无法正确编译代码。以下是一些常见的原因和解决方法:语法错误:这是最常见的错误类型,包括拼写错误、缺失的分号、括号不匹配等。检查代码中的语法错误,并尝试修复它们。引用错误:如果您引用了不存在的......
  • Android 一例Base64错误问题
    在Android11下正常,8.1下不正常修改importimportorg.apache.commons.codec.binary.Base64;为importandroid.util.Base64;publicstaticStringencrypt(Stringdata){try{SecretKeysecretKey=newSecretKeySpec(SECRET_KEY.getBytes(),ENCRYPT......
  • fork: retry: No child processes 在go程序中,每个程序启动64个协程会报此错误(每台机器
    解决方案:vi /etc/security/limits.d/20-nproc.conf*softnproc4096rootsoftnprocunlimited或者修改4096为unlimited......
  • 错误 NETSDK1136 如果使用 Windows 窗体或 WPF,或者引用使用 Windows 窗体或 WPF 的项
    背景:当同一解决方案的项目A引用项目B的时候出现引用异常 大概意思是项目A的框架类型是.net7.0,项目B的框架类型是net7.0-windows两者不兼容查看了连着的项目类型发现项目B是指定为Windows操作系统(注:建立类库项目B时没有指定操作系统,不知为啥显示指定了) 类库项目A是没指定......
  • 实现Springboot中MyBatisplus使用分页“@P0”附近有语法错误selectPage, IPage和Page分
    说明:QueryWrapper<Banner> warapper=newQueryWrapper<>();Page<Banner>page=newPage<>(1,1);IPage<Banner>iPage=bannerMapper.selectPage(page,warapper);输出结果还是全部的,没有limit效果。 解决:查了一天发现网上有说,没有进行配置分页插件,加上这个分页插件配置类......
  • Go 函数多返回值错误处理与error 类型介绍
    Go函数多返回值错误处理与error类型介绍目录Go函数多返回值错误处理与error类型介绍一、error类型与错误值构造1.1Error接口介绍1.2构造错误值的方法1.2.1使用errors包1.2.2自定义错误类型二、error类型的好处2.1第一点:统一了错误类型2.2第二点:错误是值2.3第三点:易......
  • 【笔记】问题控制与管理&故障、问题、已知错误、变更请求之间的逻辑关系&问题管理流程
    【笔记】问题控制与管理&故障、问题、已知错误、变更请求之间的逻辑关系问题控制与管理与故障管理的尽可能快地恢复服多的目标不同,问题管理是要防止再次发生故障**例如你制作了一个报表,用户填写了问题数据进去,因此报错提示了,让用户换个数据或者和用户说不要这样填写的方法就算......
  • cron: can’t lock /var/run/crond.pid 错误处理方法
    解决方案: rm -rf /var/run/crond.pid 重启即可  重新加载处理方法: /etc/init.d/cronreload 重启服务处理方法:/etc/init.d/crondrestart  或者杀掉crond进程:pkillcrond或者pkillcron,然后/etc/init.d/crondrestart  ......
  • Cocos Creator 常见错误排查方法
    CocosCreator新手开发的时候经常会遇到一些错误不知道如何解决,今天把这些错误总结一下,下次遇到的时候,自己知道如何分析。 到底谁为null或undefine 对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习......
  • 示波器探测需要避免的七大常见错误
    了解常见的示波器探测错误以及如何避免这些错误,这将帮助您更好地进行测量。在理想情况下,所有示波器探头都应该是一条不会对被测设备产生任何干扰的导线,当连接到您的电路时,具有无穷大的输入电阻,而电容和电感为零。这样将会精确复制被测信号。但现实情况是,示波器探头会给电路带......