2011-02-28 72 views
2

我有以下情況,我想監視Android手機上的系統調用,所以我做了一個腳本來做到這一點。使用Android模擬器完美工作(將應用程序的痕跡寫在我的Ubuntu上的特定文件中)。 問題是,當我附上一個真正的手機來分析它,它說,在結果文件中的以下內容:Android strace在Real設備上

ptrace attach failed: Operation not permitted 

我使用此代碼來得到它,但我不明白爲什麼它的工作原理上仿真器,而不是根植的真實設備。

這是COMAND我在Perl使用:

system("$dirTools/adb -s $Device shell strace -p $PID[1]>$dirRecordDataSet/$Date/$appName &"); 

什麼建議嗎?在此先感謝

+2

很可能您需要root訪問才能執行該調用。 – 2011-02-28 17:56:19

回答

1

可能是亞行守護程序運行有限的特權。你可以嘗試用setuid roo安裝strace。下面是關於它的手冊頁建議:

設置uid安裝

如果strace的安裝setuid爲根 然後調用用戶將能夠 重視和跟蹤由 任何用戶擁有的進程。此外setuid和 setgid程序將被執行,並且 追蹤到正確的有效 特權。由於只有用戶提供完整的root權限信任 應該 允許做這些事情,它只 有意義安裝strace的作爲 setuid的時候誰又能 執行它的用戶僅限於誰擁有這種信任那些 爲root用戶。例如,對於 示例,安裝帶有模式 'rwsr-xr--',用戶根和組 跟蹤的012ce特殊版本的strace是有意義的,其中跟蹤 組的成員是受信任的用戶。如果確實使用 這個功能,請記住 安裝一個非setuid版本的strace 供普通用戶使用。

1

通過回答this question,可以安裝APK文件到Android emulator。安裝後,

轉到Eclipse,從Windows打開DDMS視圖=>打開透視圖。

轉到File Browser選項卡,單擊任意文件夾,然後單擊「將文件推送到設備」。您可以在這裏上傳任何空的trace.txt文件。我會建議你把你的文件放在SD卡文件夾中。

轉到上述鏈接中給出的CMD。類型adb shell。通過輸入cd sdcard轉到SD卡。

在命令行中輸入ps,然後通過軟件包名稱找到APK文件的PID。

現在鍵入strace -p <pid> -o trace.txt。所有的系統調用都將被放置在這個文件中。當你想完成你的APK的測試時,你可以將這個trace.txt文件下載到你的計算機上並查看這些痕跡。