Android设备中的Android strace

时间:2011-02-28 16:54:54

标签: android linux perl android-emulator strace

我有以下情况,我想监控Android手机上的系统调用 我做了一个脚本来做到这一点。使用Android Emulator可以很好地工作(将应用程序的痕迹写在我的Ubuntu上的特定文件中)。 问题是,当我附加一个真正的手机进行分析时,它会在结果文件中显示以下内容:

ptrace attach failed: Operation not permitted

我正在使用此代码来获取它,但我不明白为什么它可以在模拟器上运行而不是在root实际设备中运行。

这是我在perl中使用的命令:

system("$dirTools/adb -s $Device shell strace -p $PID[1]>$dirRecordDataSet/$Date/$appName &");

有什么建议吗?提前致谢

2 个答案:

答案 0 :(得分:1)

Maye是adb守护程序以有限的权限运行。您可以尝试使用setuid roo安装strace。以下是有关它的手册页建议:

  

Setuid安装

     

如果将strace安装到root用户   然后调用用户将能够   附加和跟踪所拥有的进程   任何用户。另外还有setuid和   setgid程序将被执行   跟踪正确有效   特权。由于只有用户信任   具有完全root权限应该是   只允许做这些事情   将strace安装为有意义   setuid为root用户谁可以   执行它仅限于那些   拥有这种信任的用户。对于   例如,安装一个有意义   特殊版本的strace with mode   'rwsr-xr--',用户root和组   跟踪,跟踪成员的位置   组是可信用户。如果你使用   这个功能,请记住   安装一个非setuid版本的strace   供普通的lusers使用。

答案 1 :(得分:1)

您可以按照this question的回答将APK文件安装到Android emulator。安装后,

转到Eclipse,从Windows打开DDMS视图=>开放视角。

转到File Browser标签,点击任意文件夹,然后点击“将文件推送到设备”。您可以在此处上传任何空的trace.txt文件。我建议你把你的文件放在sdcard文件夹中。

转到上面链接中给出的CMD。输入adb shell。输入cd sdcard即可转到SD卡。

现在在命令行中键入ps,并通过其包名找出您的APK文件的PID。

现在输入strace -p <pid> -o trace.txt。所有系统调用都将放在此文件中。如果您想完成对APK的支持,可以将此trace.txt文件下载到您的计算机并查看跟踪。