資源簡介
加載elf 文件,得到符號表,然后基于堆棧回溯,主要基于SP、PC、LR 等寄存器值,結(jié)合符號表,回溯堆棧
代碼片段和文件信息
#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“
評論
共有 條評論