天天看點

nanopim3檔案系統支援strace和gdb

這篇文章主要講,如何根據源碼,編譯後安裝到nanopim3的檔案系統中。把strace和gdb安裝好了之後,那麼linux使用者态的調試手段基本準備就緒了。本文使用的 源碼,基本都是接近最新版本的。

  • nanopim3檔案系統支援strace

strace源碼路徑https://github.com/strace/strace/releases

下載下傳源碼包strace-5.0.tar.xz,解壓進入strace根目錄/xxx/strace-5.0,

編譯前配置交叉編譯工具鍊和生成路徑如下:

./configure --prefix=/home/jqh/work/pkg_strace --host=arm-linux CC=arm-linux-gcc

然後直接開始編譯make -j8;安裝make install;

然後檢視安裝目錄編譯出來的strace檔案,

[email protected]:~/work/pkg_strace$ ls -R

bin  share

./bin:

strace  strace-graph  strace-log-merge

./share/man:

man1

将strace可執行檔案直接拷貝到檔案系統中,運作,發現缺少動态庫librt.so.1和libpthread.so.0。說明之前做的檔案系統依賴的動态庫還不夠全,現在需要将缺少的這兩個動态庫拷貝到/lib目錄下。

然後再次執行strace -help指令發現已經能夠正常使用。

[[email protected] ~]#strace -help

usage: strace [-CdffhiqrtttTvVwxxy] [-I n] [-e expr]...

              [-a column] [-o file] [-s strsize] [-P path]...

              -p pid... / [-D] [-E var=val]... [-u username] PROG [ARGS]

   or: strace -c[dfw] [-I n] [-e expr]... [-O overhead] [-S sortby]

              -p pid... / [-D] [-E var=val]... [-u username] PROG [ARGS]

檢視一下版本,

[[email protected] ~]#strace -V

strace -- version 5.0

Copyright (c) 1991-2019 The strace developers <https://strace.io>.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Optional features enabled: (none)

這裡增加strace指令是為了後續調試使用者态程式。建構基本的調試指令和手段。

  • nanopi3檔案系統支援gdb

Gdb源碼路徑ftp://sourceware.org/pub/gdb/snapshots/current/

本文下載下傳的是gdb-8.2版本的代碼,解壓進入gdb-8.2根目錄/home/jqh/work/gdb-8.2,

編譯前配置交叉編譯工具鍊和安裝路徑:

./configure --prefix=/home/jqh/work/gdb_dir --host=arm-linux CC=arm-linux-gcc

然後直接編譯make -j4;安裝make install;

檢視安裝目錄:

bin  include  lib  share

将bin目錄下的檔案拷貝到檔案系統中,運作gdb,并檢視版本。

《如果缺少庫檔案,可以使用指令

[email protected]:~/work/nanopim3_uboot$ arm-linux-ldd --root /home/jqh/work/4.9.3/arm-cortexa9-linux-gnueabihf/sys-root nanopi3_rootfs_V1/usr/bin/gdb

        libdl.so.2 => /lib/libdl.so.2 (0xdeadbeef)

        libc.so.6 => /lib/libc.so.6 (0xdeadbeef)

        ld-linux-armhf.so.3 => /lib/ld-linux-armhf.so.3 (0xdeadbeef)

        libm.so.6 => /lib/libm.so.6 (0xdeadbeef)

,來檢視可執行程式依賴哪些庫檔案,然後參考前文,在對應的路徑去取庫檔案》

[[email protected] ~]#gdb -v

GNU gdb (GDB) 8.2

Copyright (C) 2018 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

至此,基本的調試工具已經悉數安裝到檔案系統中了。為後續使用者态調試打好基礎。

繼續閱讀