首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >android操作系统中的系统调用是如何执行的,是否可以对其进行监控?

android操作系统中的系统调用是如何执行的,是否可以对其进行监控?
EN

Stack Overflow用户
提问于 2015-02-05 00:30:54
回答 2查看 5.1K关注 0票数 1

我在理解系统调用是如何在android应用程序执行中起作用时遇到了一些问题。

根据我对安卓应用程序执行的理解,.class文件被翻译成dalvik bytecode (DEX),它被组合在一起形成ODEX。然后使用JIT编译器将ODEX直接编译成机器码以供执行。

在这种情况下,android的linux内核上的系统调用是如何发挥作用的?此外,有没有可能监控这些系统调用的方法?

EN

回答 2

Stack Overflow用户

发布于 2016-07-29 15:52:53

系统调用是内核空间的函数,可用于用户空间。它提供了操作硬盘文件或控制进程的能力。它可以通过libc.so获得。所有代码(Java、本机、其他任何...)需要与linux操作系统/ Android操作系统交互的应用程序最终将调用syscall。Strace是一个用于调试进程的Linux实用程序。它可以监控系统调用、信号传递和进程状态的变化。Strace使用ptrace系统调用来监视另一个进程内存和寄存器。要使用它,只需执行:

代码语言:javascript
运行
复制
strace -p <package-name-pid> 
票数 1
EN

Stack Overflow用户

发布于 2015-02-05 00:43:19

嗯,Java是一种高级语言,当你在Android中打开一个文件时,它会使用JNI调用fopen()。做任何“系统”东西的每一个方法都是如此。

是的,你可以在安卓系统中监控系统调用,但是你需要一个有根的设备,并且你需要用你的库替换系统.so库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28326479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档