Android 如何在特定时间段执行strace

Android 如何在特定时间段执行strace,android,shell,execute,strace,Android,Shell,Execute,Strace,我正在使用“strace”命令记录与Android应用程序关联的系统调用执行 Process process = Runtime.getRuntime().exec("su"); OutputStream os; os = process.getOutputStream(); os.write("strace -p"+processID+" -o /mnt/sdcard/straceLog.txt".getBytes()); os.close(); 我如何在任何应用程序的特定时间段(例如30秒

我正在使用“strace”命令记录与Android应用程序关联的系统调用执行

Process process = Runtime.getRuntime().exec("su");
OutputStream os;
os = process.getOutputStream();
os.write("strace -p"+processID+" -o /mnt/sdcard/straceLog.txt".getBytes());
os.close();

我如何在任何应用程序的特定时间段(例如30秒)内对系统调用进行strace,并在此之后中断strace执行..请帮助…

在后台进程中运行strace,并在给定时间后终止该进程


write(“strace-p”+processID+”-o/mnt/sdcard/straceLog.txt&sleep 30;kill$!”.getBytes()

使用
超时
程序

timeout 1 strace-c sleep 5

或纳入OP的问题中:

os.write(“超时30 strace-p”+processID+”-o/mnt/sdcard/straceLog.txt.getBytes())

这可能在Android上不可用(我不知道),但是这个问题是我搜索running strace time-based时第一个遇到的问题,所以希望这可以帮助某人。

strace(至少Android版本)似乎没有任何这样的选项。可能是在java应用程序中运行计时器并在一段时间后杀死strace(或父超级用户shell),或者构建有时间限制的修改过的strace。你也可以考虑在java中捕获输出,然后关闭管道,一旦你拥有了你想要的,并且看看这是否会造成你的结束时在一个数据集中死亡。