在Android真機上使用gdb單步調試

首先需要一臺root過的手機,安裝好BusyBox工具箱,並連接到一臺配置好adb的調試PC。

 

1、從NDK的prebuild目錄下找到對應手機平臺的gdbserver,上傳到手機,運行遊戲,然後運行

gdbserver --attach 127.0.0.1:6666 PID

其中,PID是要調試的應用的進程ID,可以用top或ps命令查看。6666是要使用的端口號,手機上任意一個沒有被使用的端口都可以。該命令運行之後,被附加的應用會暫停,等待gdb客戶端的連接。

 

2、打開Windows命令行工具,forward一下端口, adb forward tcp:6666 tcp:6666

 

3、windows命令行中運行對應手機平臺的gdb工具,通常放在NDK的工具鏈目錄裏面,例如:

toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-gdb.exe

 

4、在gdb中指定遠程目標,運行 target remote:6666

這時候就應該能附加到目標進程上了,然後就像用gdb調試本地程序一樣調試就行了。

 

附加說明:

有時候會有SIGPWR或者SIGXCPU這樣的信號會讓gdb斷下來,可以用如下的命令忽略掉這些信號:

handle SIGPWR noprint

handle SIGXCPU noprint

 

另外,手機上的sdcard目錄是不能給文件添加可執行權限的,需要把gdbserver拷貝到內部存儲目錄。但是內部存儲根目錄默認是隻讀掛載的,使用如下的命令用讀寫方式重新掛在即可:

mount -o rw,remount /

 

有時候,用數據線連接手機比較容易碰到線而讓連接斷開,可以使用adb的TCP連接方式連接手機來解決這個問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章