作为项目的一部分,我正在尝试为Android创建一个监控应用程序。为此,我想使用strace,但我无法使Strace在一个真正的设备上工作。
为了测试Strace,最初我尝试使用以下代码使用亚行启动Strace:
亚行壳 root@mako:/ # strace -p 9807
Strace正确启动,但是(据我所见)每当任何用户输入到应用程序时,它都会给出以下输出,当Strace退出时,它跟踪的应用程序会重新启动自己:
clock_gettime(CLOCK_MONOTONIC,{68514,862578038}) =0 clock_gettime(CLOCK_MONOTONIC,{68514,862822201}) =0 clock_gettime(CLOCK_MONOTONIC,{68514,863035844}) =0 clock_gettime(CLOCK_MONOTONIC,{68514,863249487}) =0 clock_gettime(CLOCK_MONOTONIC,{68514,863463129}) =0 -- {si_signo=SIGSEGV,si_code=SEGV_MAPERR,si_addr=0xd} -- σ(SIGSEGV,{SIG_DFL,[],SA_RESTART},{0xb520a3b9,[],SA_STACK|SA_SIGINFO},0) =0 σ(SIGHUP,{0xb520a3b9,[],SA_STACK|SA_SIGINFO},NULL,0) =0 (PR_GET_NAME,0xb6fcbb6c,0,0,0) =0 套接字(PF_LOCAL,SOCK_DGRAM|SOCK_CLOEXEC,0) = 31 fcntl64(31,F_SETFL,O_RDONLY|O_NONBLOCK) =0 连接(31,{sa_family=AF_LOCAL,sun_path="/dev/socket/logdw"},110) =0 clock_gettime(CLOCK_REALTIME,{1420310998,749300862}) =0 写(1,{“4 ",1},{”365%“,2},{”3269\250 T~l 251,“,8},{”7“,1},{"libc\0",5},{”致命信号1(?)“,代码1”.,59},6) = 76 关闭(1)=0 prctl(PR_GET_DUMPABLE) =1 套接字(PF_LOCAL,SOCK_STREAM,0) =1 连接(1,{sa_family=AF_LOCAL,sun_path=@"android:debuggerd"},20) =0 写(1,“\0\0\0\365%\0\0\0\0\0\1\0\0\0”,16) = 16 读(1,“,1) =0 关闭(1)=0 σ(SIGHUP,{SIG_DFL,[],SA_RESTART},{0xb520a3b9,[],SA_STACK|SA_SIGINFO},0) =0 rt_sigreturn() = 1545157337 -- {si_signo=SIGSEGV,si_code=SEGV_MAPERR,si_addr=0xd} -- +++被SIGSEGV +++杀死
当我在仿真器上尝试相同的东西时,它工作得很好。
我的设备是基于根的,我相信我给了亚行必要的权限(SuperSU请求授予SuperUser权限,shell是root@mako)。我还下载了一个strace二进制文件,将它推到设备上,并试图通过在应用程序中打开来跟踪它(尝试跟踪同一个打开的应用程序Strace ),但它也给出了类似的行为。
我在启用Usb调试和Eclipse打开并没有进行Usb调试的情况下尝试了这两种方法。当Eclipse打开时,在应用程序崩溃之前,Logcat会给出以下日志:
01-03 21:15:13.936: E/(11338):ptrace附加失败:不允许操作
这使我认为这是一个权限问题,但也令人困惑,因为strace在给出用户输入之前是有效的。
所以现在我很困惑为什么Strace不能在我的设备上工作。任何帮助或指向正确方向的指示都将受到感谢。
编辑:我使用的是Android5.0.1,这可能也可能不是一个问题,因为我在某个地方读到,由于安全性的改进,Kitkat之后的ptrace出现了一些问题,但我也不确定这是否是问题所在。任何确认/解决方案都将是完美的。
发布于 2016-01-09 07:44:18
运行cm-12.1的nexus4也有相同的错误。
adb shell
root@mako:/ # strace -p pid
...
something
...
+++ killed by SIGSEGV +++
大多数情况下,当我尝试使用这个应用程序时。错误就会出现。
然后我尝试了另一个rom,而strace工作。:)
很可能,您的strace与您的设备微妙地不兼容,或微妙地中断,正如Chris所说。
https://stackoverflow.com/questions/27758653
复制相似问题