簡體   English   中英

Android:調試共享庫

[英]Android: debug shared library

我想調試android NDK應用程序,更確切地說 - 我想檢查哪些參數( r4-r8 r1-r4寄存器)從apk中的共享庫傳遞給函數。

我嘗試過的:

  • 我在設備上運行了gdbserver:1234 --attach
  • 我在PC上運行了來自谷歌的ndk軟件包中的arm-linux-androideabi-gdb
  • 我已經設置了solib-search-path和寫入目標遠程:1234

到現在為止還挺好。 現在我嘗試設置斷點( break <function name> )(來自objdump的函數名),但是我得到了repond: Cannot access memory at address <...> info shared表示庫已加載,這是否意味着我無法在那里設置斷點? 或者我做錯了什么?

ndk-build skript比你期望的要多得多。
它是復制gdbserver ,一個名為gbd.setup的文件和生成的.so的東西之一
進入一個名為的隱藏文件夾 OBJ / armei /
在那里,您必須添加要調試的庫,因為符號是
引用它們。
通過一些adb shell pull-commands將庫從設備復制到PC。
我寫了一篇關於這個主題的文章: http //www.professional-android-development.com/articles/android-ndk-large-c-projects
將庫放入正確的文件夾時,您可以設置斷點。
不過,由於某些內部原因,他們可能會失敗。
在這種情況下運行ndk-gdb --start(第一次嘗試也將失敗),強制應用程序關閉並重新運行ndk-gdb --start(這次不強制關閉應用程序)。

“無法訪問地址<...>處的內存”通常表示PC上的.so文件與Android上的.so文件不匹配。 你重新編譯並重新安裝了嗎?

順便問一下,你沒有使用“ndk-gdb”的原因是什么? 這是一個腳本(NDK的一部分),可以為您處理所有的血腥細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM