4

我想在某些事件发生时转储堆栈,所以我在init.rc中编写了一个脚本,如下所示。然后我使用setprop dump_stack 0andsetprop dump_stack 1来操纵它,但是我的控制台中没有输出?

on property:dump_stack=1
       exec /system/bin/cat /proc/100/stack    # pid = 100

我在 system\core\init\builitins.c 中添加了一些日志,它说代码有效(retstatus 为 0)。即使我将脚本更改为“exec /system/bin/cat /proc/100/stack > /data/temp”,它仍然无法正常工作。那么,init.rc(init进程)的输出在哪里呢?

PS。我将脚本写入 init.rc 的原因是“权限”。init 进程是 root,因此它可以转储其他进程的堆栈。

而且,语法是否正确?我在http://www.kandroid.org/online-pdk/guide/bring_up.html中使用Android Init 语言编写了“exec /system/bin/cat /proc/100/stack”

4

1 回答 1

5

Init 正在写入内核缓冲区。您可以使用 dmesg 查看它的输出。确保提高 init.rc 文件中的日志级别。

于 2012-09-04T09:51:09.953 回答