我在使用gcc编写用C语言编写的信号处理程序时遇到错误,在出现Segmentation fault之后显示转储的寄存器值.当我尝试使用代码访问它时:
void print_registers(FILE *fd, ucontext_t *ctx, bool fpu = false)
{
const char *flags_str[] = {
"CF", 0, "PF", 0, "AF", 0, "ZF", "SF", "TP", "IF", "DF",
"OF", 0, 0, "NT", 0, "RF", "VM", "AC", "VIF", "VIP", "ID"
};
greg_t *regs = ctx->uc_mcontext.gregs;
void *eip[1] = { (void*)regs[REG_EIP] };
char **symbol = backtrace_symbols(eip, 1);
fprintf(fd, "Registers:\neip is at ");
backtrace_symbols_fd(eip, 1, fd->_fileno);
size_type flags = regs[REG_EFL];
fprintf(fd, "eflags: %x [ ", flags);
for (size_type i = 0; i < …Run Code Online (Sandbox Code Playgroud)