我知道有一些方法使用「dalvik.vm.stack追蹤文件」得到內核線程的堆棧,以獲得調用堆棧如何獲取在android中的用戶空間上運行的指定進程的調用堆棧?
- 或使用原路返回獲取堆棧當前流程。
但現在我需要跟蹤用戶空間過程中,有許多子進程(線程)只有在一些特殊的事件發生,由另一個進程(我們可以把它當作一個臨時的調試器)。有沒有辦法做這樣的事情?
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(操作不允許)
難道我錯過了什麼?
我在android平臺上工作。看來我沒有權限附加一些過程? (GDB工具是根,但我的應用程序是沒有的。)
這隻會真正適用於您自己的代碼或植根設備。 – 2012-07-09 11:56:33
是的。它是。我可以編譯代碼。 – carl 2012-07-09 12:23:29