亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

使用Clion優雅開發和調試Android Native源碼

2024-01-02 02:13:46
372
0

使用Clion優雅開發和調試Android Native C/C++源碼

環境:
Windows 11 + wsl2 Ubuntu18.04
Ubuntu下同理

一,Clion安裝和注冊

1.1 下載clion應用和注冊軟件

CLion-2023.1.2.tar.gz: 應用可以直接從官方下載
自行解決注冊問題,方法同IDEA。

1.2 啟動clion

$ tar -zxvf CLion-2023.1.2.tar.gz
$ ./clion-2023.1.2/bin/clion.sh
后臺啟動
$ nohup ./clion-2023.1.2/bin/clion.sh &

二,Android project導入

2.1 編譯生成cmake project

$ source build/envsetup.sh
$ lunch
$ export SOONG_GEN_CMAKEFILES=1
$ export SOONG_GEN_CMAKEFILES_DEBUG=1
$ make nothing
$ mv development/ide/clion/frameworks/native/CMakeLists.txt out/development/ide/clion/frameworks/native/
$ mv out/development/ide/clion/* development/ide/clion/

2.2 open project

clion從{SOURCE}/development/ide/clion/frameworks/native打開項目

x86項目的統一將development/ide/clion/frameworks/native/CMakeLists.txt下arm換成x86_64

修改settings-->Toolchains換成和CMakefiles.txt定義的一致

然后點Reload CMake Project, 無錯誤說明項目導入成功。

2.3 Change Project Root

點擊Tools-->CMake-->Change Project Root改變項目根目錄為源碼目錄{SOURCE}/frameworks/native/

打開代碼,可以Find Usages說明正常使用

三,調試

3.1 clion設置

點擊 Run –> Edit configurations, 然后選擇Remote Debug, 配置設置為:

Debugger: Bundled GDB
'target remote' arg: :12345 (如果是遠程環境需要加上ip, 如ip:12345)
Sysroot: /home/huangqw/code/out/target/product/blueline/symbols

3.2 創建.gdbinit文件

vim ~/.gdbinit

set dir /home/huangqw/code
set solib-absolute-prefix /home/huangqw/code/out/target/product/blueline/symbols
set solib-search-path /home/huangqw/code/out/target/product/blueline/symbols/system/lib64:/home/huangqw/code/out/target/product/blueline/symbols/system/lib64/hw:/home/huangqw/code/out/target/product/blueline/symbols/system/lib64/ssl/engines:/home/huangqw/code/out/target/product/blueline/symbols/system/lib64/drm:/home/huangqw/code/out/target/product/blueline/symbols/system/lib64/egl:/home/huangqw/code/out/target/product/blueline/symbols/system/lib64/soundfx:/home/huangqw/code/out/target/product/blueline/symbols/vendor/lib64:/home/huangqw/code/out/target/product/blueline/symbols/vendor/lib64/hw:/home/huangqw/code/out/target/product/blueline/symbols/vendor/lib64/egl

3.3 adb連接手機

adb root
adb forward tcp:12345 tcp:12345
adb shell
blueline:/ # gdbserver64 :12345 --attach `pidof surfaceflinger`
    Attached; pid = 654
    gdbserver: Unable to determine the number of hardware watchpoints available.
    gdbserver: Unable to determine the number of hardware breakpoints available.
    Listening on port 12345

3.4 運行斷點調試

回到CLion中,點擊Run –> Debug “Unnamed” 開始調試
在截屏代碼下打個斷點,如SurfaceFlinger::renderScreenImplLocked

然后手動截圖,成功斷點如上圖,接下來就可以單步運行,正常的話可以打開項目外的系統庫文件。如圖所示堆棧里的Looper函數。如顯示的是匯編代碼則不正常, 請檢查.gdbinit文件,或者在gdb終端里set dir “xxx” 設置源碼目錄

3.5 變量顯示optimized out問題

調試時變量顯示optimized out,無法正常查看。這是由于C++編譯優化的原因,在Android.bp的cflags里加個”-O0”,重新編譯surfaceflinger, push生成即可。

0條評論
0 / 1000
h****n
13文章數
0粉絲數
h****n
13 文章 | 0 粉絲
原創

使用Clion優雅開發和調試Android Native源碼

2024-01-02 02:13:46
372
0

使用Clion優雅開發和調試Android Native C/C++源碼

環境:
Windows 11 + wsl2 Ubuntu18.04
Ubuntu下同理

一,Clion安裝和注冊

1.1 下載clion應用和注冊軟件

CLion-2023.1.2.tar.gz: 應用可以直接從官方下載
自行解決注冊問題,方法同IDEA。

1.2 啟動clion

$ tar -zxvf CLion-2023.1.2.tar.gz
$ ./clion-2023.1.2/bin/clion.sh
后臺啟動
$ nohup ./clion-2023.1.2/bin/clion.sh &

二,Android project導入

2.1 編譯生成cmake project

$ source build/envsetup.sh
$ lunch
$ export SOONG_GEN_CMAKEFILES=1
$ export SOONG_GEN_CMAKEFILES_DEBUG=1
$ make nothing
$ mv development/ide/clion/frameworks/native/CMakeLists.txt out/development/ide/clion/frameworks/native/
$ mv out/development/ide/clion/* development/ide/clion/

2.2 open project

clion從{SOURCE}/development/ide/clion/frameworks/native打開項目

x86項目的統一將development/ide/clion/frameworks/native/CMakeLists.txt下arm換成x86_64

修改settings-->Toolchains換成和CMakefiles.txt定義的一致

然后點Reload CMake Project, 無錯誤說明項目導入成功。

2.3 Change Project Root

點擊Tools-->CMake-->Change Project Root改變項目根目錄為源碼目錄{SOURCE}/frameworks/native/

打開代碼,可以Find Usages說明正常使用

三,調試

3.1 clion設置

點擊 Run –> Edit configurations, 然后選擇Remote Debug, 配置設置為:

Debugger: Bundled GDB
'target remote' arg: :12345 (如果是遠程環境需要加上ip, 如ip:12345)
Sysroot: /home/huangqw/code/out/target/product/blueline/symbols

3.2 創建.gdbinit文件

vim ~/.gdbinit

set dir /home/huangqw/code
set solib-absolute-prefix /home/huangqw/code/out/target/product/blueline/symbols
set solib-search-path /home/huangqw/code/out/target/product/blueline/symbols/system/lib64:/home/huangqw/code/out/target/product/blueline/symbols/system/lib64/hw:/home/huangqw/code/out/target/product/blueline/symbols/system/lib64/ssl/engines:/home/huangqw/code/out/target/product/blueline/symbols/system/lib64/drm:/home/huangqw/code/out/target/product/blueline/symbols/system/lib64/egl:/home/huangqw/code/out/target/product/blueline/symbols/system/lib64/soundfx:/home/huangqw/code/out/target/product/blueline/symbols/vendor/lib64:/home/huangqw/code/out/target/product/blueline/symbols/vendor/lib64/hw:/home/huangqw/code/out/target/product/blueline/symbols/vendor/lib64/egl

3.3 adb連接手機

adb root
adb forward tcp:12345 tcp:12345
adb shell
blueline:/ # gdbserver64 :12345 --attach `pidof surfaceflinger`
    Attached; pid = 654
    gdbserver: Unable to determine the number of hardware watchpoints available.
    gdbserver: Unable to determine the number of hardware breakpoints available.
    Listening on port 12345

3.4 運行斷點調試

回到CLion中,點擊Run –> Debug “Unnamed” 開始調試
在截屏代碼下打個斷點,如SurfaceFlinger::renderScreenImplLocked

然后手動截圖,成功斷點如上圖,接下來就可以單步運行,正常的話可以打開項目外的系統庫文件。如圖所示堆棧里的Looper函數。如顯示的是匯編代碼則不正常, 請檢查.gdbinit文件,或者在gdb終端里set dir “xxx” 設置源碼目錄

3.5 變量顯示optimized out問題

調試時變量顯示optimized out,無法正常查看。這是由于C++編譯優化的原因,在Android.bp的cflags里加個”-O0”,重新編譯surfaceflinger, push生成即可。

文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0