コールスタックを取得する方法がいくつかあることは知っていました
- 「dalvik.vm.stack-trace-file」を使用してカーネル スレッドのスタックを取得する
- または backtrack を使用して現在のプロセスのスタックを取得します。
しかし今、私は、特別なイベントが発生したときにのみ、別のプロセスによって多くの子プロセス (スレッド) を持つユーザー空間プロセスをトレースする必要があります (一時的なデバッガーとして扱うことができます)。そのようなことを行う方法はありますか?
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 は return で、errno は 1 (操作は許可されていません)
私は何かが恋しいですか?
私はアンドロイドプラットフォームで働いています。いくつかのプロセスを添付する権限がないようですか?(gdb ツールはルートですが、私のアプリはそうではありません。)