@(Android研究)[android|gdb]html
[TOC]linux
如今須要將Linux上的工具移植到Android上,一般Linux上代碼是經過Makefile管理編譯選項,爲了直接使用Makefile而不使用Android.mk文件,則須要使用Android NDK的編譯工具鏈進行交叉編譯,成功時會輸出一個可在Android上運行的ELF可執行文件,在本文中假設這個ELF可執行文件名爲"android-exe"。本文介紹如何在本機(本文中的本機系統是Linux)上經過GDB遠程調試Android上的"android-exe"。android
個人Android NDK的版本:android-ndk-r11b。shell
步驟一、2是爲了本機GDB遠程調試時能夠找到Android系統庫的符號。eclipse
在adb shell中進入"/data/local/tmp/"目錄,而後執行下面的命令:tcp
gdbserver :1234 android-exe
1234表示gdb監聽的調試端口,android-exe是被調試的ELF可執行程序。ide
若是調試的程序須要傳入參數,那麼輸入命令:gdbserver :1234 android-exe [參數...]工具
在本機上輸入下面的命令重定向端口:ui
adb forward tcp:1234 tcp:1234
輸入下面的命令進行調試命令行
$NDK/prebuilt/linux-x86_64/bin/gdb android-exe
這裏的"android-exe"是指本機上android-exe的存儲位置。
執行上面的命令後將會進入GDB命令行界面:
(gdb)
在GDB命令行界面中遠程鏈接gdbserver
target remote :1234
1234表明端口號。
在GDB命令行界面中設置庫搜索路徑
set solib-search-path $SYSTEM_LIB:$SYSTEM_BIN:$PLATFORMS_21_LIB
這一步是爲了本機上GDB遠程調試時能夠找獲得符號。
info reg
設置:
b <符號名>
b <文件路徑>:行號
查看:
info break
tb <符號名>
c
n
s
print <變量名>
print也能夠打印指針值:print *<指針變量名>。
where