gpt4 book ai didi

android - android中如何获取运行在用户空间的指定进程的调用栈?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:28 24 4
gpt4 key购买 nike

我知道有一些方法可以获取调用堆栈

  1. 使用“dalvik.vm.stack-trace-file”获取内核线程的栈
  2. 或使用回溯获取当前进程的堆栈。

但现在我需要跟踪一个用户空间进程,它有许多子进程(线程),只有当一些特殊事件发生时,由另一个进程(我们可以处理它作为临时调试器)。有没有办法做这样的事情?

ptrace ( http://linux.die.net/man/2/ptrace ) 是一个很好的建议,但似乎没有办法跟踪线程?

更新

  1. http://man7.org/linux/man-pages/man2/ptrace.2.html似乎“每个线程都可以单独附加到一个(可能不同的)示踪剂”!?

  2. 我尝试使用 ptrace 获取进程的堆栈。但是我发现我没有权限?我用

    ptrace(PTRACE_ATTACH, tid2, NULL, NULL);

    但是-1是return,errno是1(Operation not permitted)

    我错过了什么吗?

  3. 我在 Android 平台上工作。似乎我没有权限附加一些过程? (gdb 工具是 root,但我的应用程序不是。)

最佳答案

如果你想附加到一个进程,你的进程和要附加的进程之间必须有父/子关系,或者你的进程以 root 运行。

关于android - android中如何获取运行在用户空间的指定进程的调用栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11392236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com