linux错误说未声明,如何在Linux 32位计算机上解决REG_EIP未声明(在此函数中首次使用)错误?...
我在使用
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 < sizeof(flags_str) / sizeof(flags_str[0]); ++i) {
if (!flags_str[i]) continue;
if (flags & (1 << i)) fprintf(fd, "%s ", flags_str[i]);
}
size_type iopl = (flags & 0x3000) >> 12;
fprintf(fd, "] iopl: %i\n"
"eax: %08x\tebx: %08x\tecx: %08x\tedx: %08x\n"
"esi: %08x\tedi: %08x\tebp: %08x\tesp: %08x\n"
"cs: %04x\tgs: %04x\tfs: %04x\n"
"ds: %04x\tes: %04x\tss: %04x\n",
iopl,
regs[REG_EAX], regs[REG_EBX], regs[REG_ECX], regs[REG_EDX],
regs[REG_ESI], regs[REG_EDI], regs[REG_EBP], regs[REG_ESP],
regs[REG_CS], regs[REG_GS], regs[REG_FS],
regs[REG_DS], regs[REG_ES], regs[REG_SS]);
}
}
我通过添加尝试了代码
#include
以及
#define _GNU_SOURCE
#ifndef REG_EIP
#define REG_EIP 0x23b46F
#endif
但是,出现的错误是:
‘REG_EIP’ undeclared (first use in this function)
(Each undeclared identifier is reported only once for each function it appears in.)
并且所有寄存器都出现错误
我尝试了很多文件……但无法得到解决方案.
任何人都可以共享解决此错误的详细信息.
感谢所有的回复者
在包含< ucontext.h之前尝试定义__USE_GNU:
#define __USE_GNU
#include
您不需要包含< sys / ucontext.h>显式,< ucontext.h>会这样做的.
linux错误说未声明,如何在Linux 32位计算机上解决REG_EIP未声明(在此函数中首次使用)错误?...相关推荐
- function在mysql里总是出错_如何在MySQL函数中引发错误
如何在MySQL函数中引发错误 我创建了一个MySQL函数,如果传递给参数的值无效,则想引发一个错误. 在MySQL函数中引发错误我有哪些选择? 6个解决方案 69 votes MySQL 5.5引入 ...
- 错误0xC004F069在运行Microsoft Windows 非核心版本的计算机上,运行slui.exe
前言 今天笔记本一打开,提示 错误0xC004F069在运行Microsoft Windows 非核心版本的计算机上,运行slui.exe 问题 笔记本开机提示,我们Windows系统过期,我之前买了 ...
- linux禁止ssh传输文件,如何在Linux下使用scp命令通过ssh安全传输文件
原标题:如何在Linux下使用scp命令通过ssh安全传输文件 在Unix或Linux操作系统上,scp实用程序(secure copy)与更著名的命令cp类似,但用于在安全加密的网络上在主机之间传输 ...
- 检测linux服务器的使用情况,如何在Linux服务器中检查内存使用情况
我们在排除服务器系统或应用程序速度减慢或行为不正常的问题时,首先要检查的是系统内存使用情况. 本文介绍了如何在Linux系统服务器中使用几个不同的命令来检查RAM的使用情况. 1.free命令 fre ...
- linux如何运行windows游戏,如何在Linux上运行Windows应用程序和游戏 互联网技术圈 互联网技术圈...
在本教程中,我将向您介绍如何在Linux中运行Windows应用程序和游戏.您可能知道,Microsoft Windows使用DirectX来运行游戏.因此,在Windows平台上玩一些需要Direc ...
- 我的linux系统怎么输入pv,如何在Linux系统中使用pv命令
本文介绍了如何在Linux系统中使用pv命令.内容很详细.有兴趣的朋友可以参考一下,希望对大家有帮助. PV 命令 PV由Andrew Wood开发,是Pipe Viewer的简称,意思是通过管道显示 ...
- linux查询当前目录剩余空间,如何在linux下查看目录的剩余空间大小
df命令是linux系统以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息,命令格式: df -hl 显示格式为: 文件系统 容量 已用 可用 已用% 挂载点 Filesystem Siz ...
- linux 怎么不检查gpg,如何在Linux上使用GPG加密和解密文件 | MOS86
如何在Linux上使用GPG加密和解密文件... GnuPrivacy Guard (GPG) allows you to securely encrypt files so that only th ...
- linux 显示目录文件数,如何在Linux系统上显示当前及子目录中的文件数量
在本指南中,我们将介绍如何在 Linux 系统上显示当前工作目录或任何目录及其子目录中的文件数量. 我们将使用 find 命令,它用于搜索目录层次结构中的文件,以及 wc 命令,它会打印每个文件或来自 ...
最新文章
- 图神经网络方法总结(Graph Neural Network)
- TCP滑动窗口(Sliding Window)原理
- javascript中创建对象的几种方式
- 公文字体字号标准2020_党政机关公文格式典型错误20例,引起重视!
- ECMAScript6入门简介篇
- Day1 安装虚拟机和centos7系统
- 2018.12.27|区块链技术头条
- ATmega328p使用硬件SPI与模拟SPI驱动74HC595,protues仿真
- WPS技巧之稻壳模板掌握结构全面信息
- 怎么防治计算机病毒,计算机病毒怎么防治
- 计讯物联防潮产品,无惧恶劣环境
- Java时间戳与时间互相转换(含毫秒及秒转换方式)
- OpenCV实践之路——人脸识别之一数据收集和预处理
- 大数数字读法 unsigned long long
- 看各路单词APP不顺手 索性自己写一个背单词系统
- vue3 + vite + ts + setup , 第七练 TSX的使用
- QtMetaObjectsysmtem详解之三:QMetaObject接口实现
- java 读取串口数据
- homeassistant搭建_梅林搭建home-assistant
- 3.1 mxc_v4l2_capture.c分析---probe函数分析
热门文章
- smartdraw 2008 成功安装
- 重置linux内核,Linux Kernel 驱动非授权重置统计漏洞
- python运行时修改代码会怎样_python运行时修改代码的方法——monkey patch
- resnet50网络结构_Resnet50详解与实践(基于mindspore)
- 【题解】JSOIWC2019 Round4
- Django restful framework之 rest接口设计规范
- SpringBoot入门教程(十)应用监控Actuator
- Javascript之 对象和原型
- 第二章:2.6 使用 runserver 命令把项目运行起来
- UVa 10082 - WERTYU 解题报告 - C语言