如何使用gdb調試android webkit核心代碼

來源:互聯網
上載者:User

如何使用gdb調試android webkit核心代碼

紅心地瓜

得益於指令碼的協助,在Emulator中使用GDB調試Native Code的設定非常簡單,比如我用gdb+gdbserver調試webkit

1.  找到你的toolchain對應的gdb,在模擬器上是arm-eabi-gdb,在prebuild下,把它的目錄加到PATH裡面

        export PATH=$ANDROID_SRC/prebuilt/linux-x86/tootlchain/arm-eabi-4.4.0/bin:$PATH

或者直接加到~/.bashrc裡面

2  執行配置指令碼

cd$ANDROID_SRC

source build/envsetup.sh

3  啟動模擬器,運行瀏覽器

l  gdbclient app_ process  :5039  browser

此時就能看到gdb順利啟動起來了(儘管有warning),此時就可以使用你熟悉的gdb命令了

看到

15   ldmdf sp!   {r4,r7}

Currentlanguage: auto;current asm

4  設定斷點

bFrameLoaderClientAndroid.cpp:868

5  執行

c

6 訪問一個網址,就可以看到gdb斷點了,enjoy it!

在target上搭建這個環境複雜一點,因為target出於空間的考慮,編譯的是release庫,而且有一個prelink的過程,主要是要修改map檔案來放下webcore的debug庫。

在target上搭建這個環境複雜一點,因為target出於空間的考慮,編譯的是release庫,而且有一個prelink的過程,主要是要修改map檔案來放下webcore的debug庫。

以下的實驗環境是我的htc magic + cm6.0

1 .如果$ANDROID_SRC根目錄下沒有buildspec.mk,執行以下操作,如果有,忽略此步驟

mv  build/buildspec.mk.default         build/buildspec.mk

2. 修改buildspec.mk,加入以下幾行

DEBUG_MODULE_libwebcore:=true 
DEBUG_MODULE_libxml2:=true 
TARGET_CUSTOM_DEBUG_CFLAGS:=-O0 -mlong-calls 

"ADDITIONAL_BUILD_PROPERTIES+= debug.db.uid=100000

lmka bacon編譯,prelink失敗

prelink maperror: library libwebcore.so@0xa8300000 is too big at 10644851 bytes, it runs3304819 bytes into librarylibexpat.so@0xa8a00000!

可以看出,libwebcore有3M的空間越界了,其實我加了3M還不夠,是3M多一點,所以要加4M

3.修改$ANDROID_SRC/build/core/prelink-linux-arm.map(改前請備份哦)

搜尋libwebcore.so,發現

libsqlite.so            0xA8B00000 # [~2M]

libexpat.so             0xA8A00000 # [~1M]

libwebcore.so           0xA8300000 # [~7M]

將libwebcore.so的大小加到11M,也就是如下

libsqlite.so           0xA8F00000 # [~2M]

libexpat.so            0xA8E00000 # [~1M]

libwebcore.so          0xA8300000 # [~11M]

 

libsqlite.so之上的.so也要對應改動,這裡忽略。有一點小工作量,網上有介紹可以通過修改Android.mk來disable prelink,我試了下,沒有成功,所以我就老老實實改了這個prelink的map檔案。

剩下的就和emulator一樣了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.