如何找linux宏的头文件,linux 使用ptrace函数时找不到头文件 .h 或者找不到某个宏的解决方法...

例如:

#include

#include

#include

#include

#include

#include /* For constants

ORIG_EAX etc */

int main()

{ pid_t child;

long orig_eax;

child = fork();

if(child == ) {

ptrace(PTRACE_TRACEME, , NULL, NULL);

execl("/bin/ls", "ls", NULL);

}

else {

wait(NULL);

orig_eax = ptrace(PTRACE_PEEKUSER,

child, * ORIG_EAX,

NULL);

printf("The child made a "

"system call %ld\n", orig_eax);

ptrace(PTRACE_CONT, child, NULL, NULL);

}

return ;

}

在linux的某些版本是运行不了,报错:找不到某个头文件或者某个宏。(上面的代码是基于i386,我试过了好几个linux的版本,还是运行出问题)

最后发现问题了。解决如下:

linux如何查找一个宏或者函数定义的位置:

以宏定义ORIG_EAX为例:

在终端输入

第一种方法:

find /usr/include/ -name *.h | xargs grep 'ORIG_EAX'

结果:

/usr/include/i386-linux-gnu/asm/ptrace-abi.h:#define ORIG_EAX 11

/usr/include/i386-linux-gnu/sys/reg.h:# define ORIG_EAX

第二种方法:

grep -nr ORIG_EAX /usr/include/

这种方法可以知道在第几行定义宏

结果:

/usr/include/i386-linux-gnu/asm/ptrace-abi.h::#define ORIG_EAX 11

/usr/include/i386-linux-gnu/sys/reg.h::# define ORIG_EAX

最后修改后,成功运行:

#include

#include

#include

#include

#include

#include /* For constants

ORIG_EAX etc */

int main()

{ pid_t child;

long orig_eax;

child = fork();

if(child == ) {

ptrace(PTRACE_TRACEME, , NULL, NULL);

execl("/bin/ls", "ls", NULL);

}

else {

wait(NULL);

orig_eax = ptrace(PTRACE_PEEKUSER,

child, * ORIG_EAX,

NULL);

printf("The child made a "

"system call %ld\n", orig_eax);

ptrace(PTRACE_CONT, child, NULL, NULL);

}

return ;

}

运行结果:

The child made a system call

后面还有ls命令出现的目录清单

Xshell连接linux(deepin)时提示ssh服务器拒绝了密码,请再试一次解决方法

用Xshell root连接时显示ssh服务器拒绝了密码,应该是应该是sshd的设置不允许root用户用密码远程登录 修改 /etc/ssh/sshd_config文件,注意,安装了openssh才会 ...

IAR 编译时找不到头文件的解决方法

Fatal Error[Pe1696]: cannot open source file "x.h" 那是因为头文件路径没有找对 到报错的.c源文件 选中右键 选择options ...

Cocoapods - pod install 成功后找不到头文件解决

问题描述:使用Cocoapods时,import 找不到头文件. 问题原因:这是因为还没设置头文件的目录. 解决办法:在项目的Target的里设置一下,添加cocoapods头文件目录:目录路径直接写 ...

编译C++,找不到头文件(fatal error: string: No such file or directory)

在androidproject中编译C++时,找不到头文件,报错例如以下: fatal error: string: No such file or directory 解决该问题须要在Android ...

CodeBlocks "no such file or directory" 错误解决方案(创建类找不到头文件)

在CodeBlocks下,有时候需要自己定义类,当然就要添加相应的头文件,但添加进去的头文件明明包含在项目中了, 但编译时还是会报错:no such file or directory;这是为什么呢? ...

#include <sys/socket.h>找不到头文件

ubuntu下socket编程涉及到头文件sys/socket.h 和sys/types.h.我是用的codeblocks编辑器,当我想查看socket,h头文件时编辑器提示找不到头文件. 我就想可能 ...

当Android工程中提示你找不到头文件,但你已经设置头文件路径了

虽然在Android.mk文件中,配置了LOCAL_C_INCLUDES路径,但是工程中的红色叉号一直提示找不到头文件 这时,你在工程树目录中展开Includes项,捣鼓捣鼓,重新build下,或许就 ...

pod JONSKit.h MBProgress.h 找不到头文件,怎么办?

这时你看项目pod部分,多了JSONKit库.好了,第三方库就这么神奇的加进来. 头文件路径 那试试看使用JONSKit.h,在ViewController.m里引用下.找不到头文件,怎么办?还没设置 ...

windows下vscode修复c++找不到头文件

因为原博客太长将部分内容分开 vscode找不到头文件的问题是由于windows下vscode默认的编译器是微软的MSVC(vs使用的编译器)的头文件路径 如果你没有安装vs肯定会因为找不到头文件而报 ...

随机推荐

h5移动端-1

iphone3 : 设备分辨率 : 320*480 屏幕分辨率 : 320*480 iphone4 : 设备分辨率 : 320*480 屏幕分辨率 : 640*960 iphone5 : 设备分辨率 ...

c#中的protected和internal

protected限制子类访问,可以跨程序集 internal 限制此程序集访问,可以跨类 protected internal 限制此程序集的子类中访问

android学习笔记二:Intent

1.Intent作用 协助完成各个组建间的通信.如activity间.启动service.Broadcast. 2.Intent构成 1.Componet name:要启动的目的组建. 2.Actio ...

ActiveX控件打包成Cab实现浏览器自动下载安装

前言 我们在浏览器中使用我们自己的一些OCX,或者是DLL这一类的文件,在X86的机器上需要我们手动将这些文件拷贝到Windows/System32 文件夹下面去,然后通过Dos命令regsvr32 ...

树状数组 && 线段树

树状数组 支持单点修改 #include using namespace std; int n, m; ], c[]; int lowbit(int x) { retur ...

oracle12c:通过oracle客户端工具配置tns,并使用sqlldr进行批量导入数据

通过oracle客户端工具配置tns: 进入oracle配置工具“Net Configuration Assistant”-> 点击“下一步”,完成tns配置. 测试是否tns可用 命令:tns ...

springMVC源码分析--SimpleServletHandlerAdapter(二)

上一篇博客springMVC源码分析--HandlerAdapter(一)中我们主要介绍了一下HandlerAdapter接口相关的内容,实现类及其在DispatcherServlet中执行的顺序,接 ...

idea中classpath的问题

新创建的项目,在web.xml中配置 Spring MVC 的 DispatcherServlet,,指定springmvc.xml,结果这部分出错,请求的时候报错 结果查找,发现在Idea中,cla ...

Linux安装npm并打包前端代码

查看node版本$ node -v查看npm版本$ npm -v如果没有安装node及npm,需要先安装node及npm#yum install node# yum install npm安装cnpm ...

mysql----------局域网数据库:如何让navicat链接局域网其他的数据库。

1.找到被链接的数据库,打开以后有一个自带的mysql数据库,打开以后下面有一个user表,把里面的第一条数据的第一个字段改成% 百分号,然后保存,重启数据库,搞定 2.如果是linux下的话,记得把 ...

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值