• 大小: 6.94KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-02-01
  • 标签: linux  LIN  x86  实验  

资源简介

加载elf 文件,得到符号表,然后基于堆栈回溯,主要基于SP、PC、LR 等寄存器值,结合符号表,回溯堆栈

资源截图

代码片段和文件信息

#include “xos_external.h“
#include “vos.h“



extern ULONG BspInitSymbolTable(UCHAR *filename);
extern ULONG symFindByValue(WORDPTR value UCHAR *name WORDPTR *pValue ULONG *pType);
int msgid2;
pthread_mutex_t g_tExcSemID;

static struct sigaction s_oact_segv; 
static struct sigaction s_oact_ill;
static struct sigaction s_oact_fpe;
static struct sigaction s_oact_bus;
static struct sigaction s_oact_abrt;

XOS_EXC_INFO g_tExcInfo;

char * XOS_ExcGetUpSP(char * SP)
{
    return *(unsigned int *)(SP);
}

char * XOS_ExcGetRA(char *SP)
{
    return *(unsigned int *)(SP + 4);
}

void EXC_LinuxSignalHandler(int signo siginfo_t *info void *context)
{

    ucontext_t    *pContext = NULL;
    
    pContext = (ucontext_t*)context;

    if (signo == SIGHUP || signo == SIGINT || signo == SIGTERM)
    {
         exit(signo);
    }

   printf(“\n pthread id is %x“ pthread_self());

    printf(“\n Here comes an exception signal: %d   signal code: %d.\n“

评论

共有 条评论