2
A
回答
4
在一個有根的設備或模擬器上,您可以將gdb附加到zygote,並將一個斷點放在新分叉的進程即將假定正在啓動的應用程序的標識的位置。
如果您修改了zygote來等待調試器附加,它可能會是最簡單的。我相信在Jdwp調試系統中有類似的東西,它可以讓你在代碼啓動的早期就進入Java調試器,但是我不知道有什麼與已經內置的gdb相媲美的東西。儘管我想你可以等待它對於jdwp,並在附加(然後分離)java調試器之前附加gdb。
更新:我試過這個,通過用gdb連接到zygote並修改一個單詞的代碼,這個代碼將會在孩子的早期被執行進入一個無限循環,然後從zygote分離。我想我會在新的孩子出現在'ps'後立即gdb並恢復它,以便它可以繼續。問題在於孩子被殺(大概是因爲沒有反應),比我輸入的所有命令都快。所以它必須由一個程序來完成。而且可能沒有那麼多,你可以在沒有停止的情況下早早看到它並殺死它 - 我的意思是你大概可以在那裏得到一個界限,但是你希望從中學到什麼你不能從閱讀源中學習?
2
OMAPpedia的Android Debugging頁面對使用gdbclient有很好的概述。
gdbclient <executable name> <port number> <task name>
- 可執行文件名:獲得:默認爲:5039(需要在號碼前加冒號)
- 任務名稱系統/ bin目錄
- 端口 號文件名通過在目標上運行「ps」。 GDB使用它來在內部識別PID。
您可能需要建立一個端口轉發與adb
第一,像這樣:
adb forward tcp:5039 tcp:5039
相關問題
- 1. 如何使用GDB調試Android上的Dalvik可執行文件?
- 2. 在兒童可執行文件上運行gdb
- 3. Android:如何使用純原生可執行文件的ndk-gdb?
- 4. 如何在Windows XP上使用Perl運行可執行文件?
- 5. 如何在帶有參數的可執行文件上運行gdb?
- 6. gdb:在運行時添加可執行文件
- 7. GDB正在運行已刪除的可執行文件
- 8. 如何在WiX中使用參數運行可執行文件?
- 9. 如何使用Node.js在客戶端運行可執行文件?
- 10. 「(gdb)run」在qemu仿真arm架構上運行可執行文件時崩潰
- 11. 在可執行文件上重複運行GDB(並停止崩潰/錯誤)
- 12. 如何在Raspberry Pi上運行可執行文件
- 13. 可執行文件如何在O/S上運行?
- 14. 如何運行在OS X上的可執行文件
- 15. 如何在Raspbian的python上運行可執行文件?
- 16. Solaris 11可以運行Android dalvik嗎?
- 17. 在可執行文件上使用dlopen()
- 18. 如何在Android上執行obj文件
- 19. 如何運行使用maven創建的可執行jar文件?
- 20. 如何使用Python運行外部可執行文件?
- 21. 如何使用python運行幾個可執行文件?
- 22. 如何使本機C可執行文件在Android中永遠運行?
- 23. 如何在iOS應用程序中運行可執行文件?
- 24. 在gradlew中運行可執行文件
- 25. 在PHP中運行可執行文件
- 26. 在linux中運行可執行文件
- 27. 可執行文件需要在PATH中 - 在Android上的GNURoot上運行Selenium
- 28. 在mac上用管理員權限運行可執行文件
- 29. 如何使.NET可執行文件在64位框架上運行
- 30. Android,是否可以在任何類型的操作系統上運行Dalvik VM以運行Android應用程序?