【发布时间】:2012-07-09 09:22:55
【问题描述】:
我知道有一些方法可以获取调用堆栈
- 使用“dalvik.vm.stack-trace-file”获取内核线程的堆栈
- 或使用回溯获取当前进程的堆栈。
但是现在我需要跟踪一个用户空间进程,只有当一些特殊事件发生时,有很多子进程(线程),由另一个进程(我们可以处理它作为临时调试器)。有没有办法做这样的事情?
ptrace (http://linux.die.net/man/2/ptrace) 是一个不错的建议,但似乎无法跟踪线程?
更新
http://man7.org/linux/man-pages/man2/ptrace.2.html 似乎“每个线程都可以单独附加到(可能不同的)跟踪器”!?
-
我尝试使用 ptrace 来获取进程的堆栈。但我发现我没有权限?我用
ptrace(PTRACE_ATTACH, tid2, NULL, NULL);
但是-1是返回,errno是1(不允许操作)
我错过了什么吗?
我在安卓平台上工作。似乎我无权附加某些进程? (gdb 工具是 root,但我的应用程序不是。)
【问题讨论】:
-
这只会在您自己的代码或有根设备上真正起作用。
-
是的。这是。我可以编译代码。
标签: android linux debugging process