1. 程式人生 > >DDD除錯opencore/stagefright(轉載更新版)

DDD除錯opencore/stagefright(轉載更新版)

Google為Android應用開發提供了eclipse加外掛作為開發工具,基於eclipse可以方便除錯apk,而對於底層開發人員(比如opencore開發)沒有提供類似直觀的開發工具及除錯手段。本文旨在介紹一種基於ddd+gdbserver的除錯方法,用於類似opencore的C層面的程式除錯。 具體步驟如下: 1、開一個終端,然後輸入:adb shell
    ps檢視mediaserver程序號
    gdbserver :4800 --attach pid   (pid為具體程序號)     注:在本系統中埠為4800開啟一個除錯程序,程序號為實際的pid值。 2、再開一個終端,輸入:adb forward tcp:4800 tcp:4800
cd /myandroid/android2.2
ddd –debugger arm-eabi-gdb out/target/product/generic/symbols/system/bin/mediaserver
然後會自動載入ddd程式
在其console視窗執行如下兩個命令,事實上會從下面指定目錄載入so庫
set solib-absolute-prefix /myandroid/android2.2/out/target/product/generic/symbols
set solib-search-path /myandroid/android2.2/out/target/product/generic/symbols/system/lib 接下來連線server端,執行命令:target remote :4800 執行完該命令後要略等一下,此時gdb會載入所需的so庫
此時可以在ddd原始碼瀏覽視窗打斷點,或者在console視窗通過命令設定斷點,
比如:b createPlayer,
然後執行命令c  至此DDD方面完成,接下來進入模擬器,點選播放視訊,即可進入斷點 ---------------------------------------------------------------------------------------------------  步驟基本上參照以上描述。 下面貼上幾張圖(可按照圖進行操作):