2014-01-30 27 views
1

我建立了AOSP樹的eng風味,並安裝在設備上。我喜歡遍歷模塊的代碼(比如說libinput.so)。我想使用作爲CFLAGS一部分傳遞的「-O0 -g」來構建此模塊。但我不想更改此模塊的Android.mk文件。如何在AOSP樹下調試構建特定模塊?

可以說這個模塊在aosppath/frameworks/base/service/input。
我在編譯build/envsetup.sh後cd cd到此文件夾。

我試過「mm -B LOCAL_STRIP_MODULE = false」。當我跨越eclipse gdb時,我看到執行順序變成鋸齒形。
然後我試圖 「毫米-B LOCAL_STRIP_MODULE =假LOCAL_CFLAGS =」 - O0 -g 「
現在GDB能夠步罰款。但這似乎並不適用於其他項目。我有一個使用skia和opengl的模塊。當我在命令行上傳遞LOCAL_CFLAGS時,構建失敗。

建議如何在AOSP樹下調試特定.so或exe的調試風格的方法是什麼?

感謝

+0

是否有任何特別原因導致您不想更改.mk文件?這通常是您設置生成類型條件的地方。 –

+0

如果我更改.mk文件,那麼我必須記住,我不應該檢查它們。 – videoguy

回答

1

所以,既然你不想更改Android.mk的主要原因是,這樣你就不必檢查中,這裏的另一種方法是使用的.repo/local_manifests文件夾更改android擁有的模塊以歸您擁有。

下面是一個示例my_manifest.xml文件,它可以爲你做到這一點:

<manifest> 
    <remote name="origin" 
      fetch="ssh://[email protected]/YourRepoHere/" /> 

    <remove-project name="platform/frameworks/base"/> 
    <project path="frameworks/base" remote="origin" name="frameworks-base" revision="your-branch-name"/> 

</manifest> 

這將刪除框架從Android清單樹/鹼,並用自己的清單樹替換它(你需要分叉到你自己的倉庫)。

之後,你就可以使用條件中的Android.mk文件,像這樣:

ifeq ($(TARGET_BUILD_VARIANT),userdebug) 
    CONDITIONAL_CHANGES_HERE 
endif 

再次,我知道你不想修改Android.mk文件,但既然你還要求提供建立模塊的建議方式,以建立變體爲條件,無論如何,如果沒有更好的方法,我將包括這個答案。這實際上是你想做的事情的建議方式,因爲你的項目現在將由回購工具維護。

+0

謝謝安德魯!這似乎很相關。我期待沿着「mm DEBUG = true」的方向行事,這會導致帶有正確調試值的CFLAGS。這樣的伎倆不是嗎? – videoguy

+0

那麼它看起來像你打電話的方式很好,因爲STRIP_MODULE似乎爲你工作。這意味着你可以通過mm命令設置env變量,Android.mk文件可能是自己重新定義或更改LOCAL_CFLAGS嗎? –

+0

當我將LOCAL_CFLAGS作爲mm的一部分傳遞時,external/skia文件夾會失敗。我搜索了所有的.mk文件。我沒有看到LOCAL_CFLAGS:=在任何地方鍵入賦值。所有都是預期的+ =類型分配。 – videoguy