我在理解系统调用如何在 Android 应用程序执行中发挥作用时遇到了一些问题。
根据我对 android 应用程序执行的理解,.class 文件被翻译成 dalvik 字节码 (DEX),它们组合在一起形成 ODEX。 ODEX然后用JIT编译器直接编译成机器码执行。
在这种情况下,android 的 linux 内核上的系统调用是如何发挥作用的?另外,有什么办法可以监控这些系统调用吗?
最佳答案
系统调用是内核空间的函数,可供 用户空间。它提供了操作硬盘驱动器文件或控制进程的能力。它可以通过 libc.so 获得。所有需要与 linux 操作系统/Android 操作系统交互的代码(Java、 native ,等等......)最终都会调用系统调用。 Strace 是一个用于调试进程的 Linux 实用程序。它可以监控系统调用、信号传递和进程状态的变化。 Strace 使用ptrace 系统调用来监视另一个进程的内存和寄存器。要使用它,只需执行:
strace -p <package-name-pid>
关于android - android 操作系统中的系统调用是如何执行的,是否可以监控它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28326479/