2022年4月26日 星期二

use gdb on cross compile environment

 【arm gdb】

[set env on PC]

export MY_PRJ_PATH=/home/user/Project/tunnel/ppTunnel/ppTunnel_dev

[arm device]

1.ulimit -c unlimited

2.run execute file

3.download core file to PC

4.將core檔從embedded system下載回開發主機,使用corss platfrom的gdb

arm-linux-gnueabihf-gdb <exefile>  <core>

5.在gdb下使用

(gdb) info sharedlibrary

6.一般應該是看到share library在哪,這時一樣在gdb下使用

                        (gdb) set sysroot <your system root path>

                        (gdb) set solib-search-path <your share library path>

                7.接著再使用bt就能看到debug資訊了

                        (gdb) bt


[PC]

1.$ROOTFOLDER/bin/arm-linux-gnueabihf-gdb $MY_PRJ_PATH/bin/exeFile  $MY_PRJ_PATH/bin/core  

2.set solib-search-path $MY_PRJ_PATH/lib/

3.bt

$ROOTFOLDER是交叉編譯環境的根目錄

$MY_PRJ_PATH是交叉編譯的專案的根目錄,下面bin裡放的是執行檔和在arm device裡產生的core檔,lib裡放的是執行檔會用到的lib,這邊可以任意指定solib-search-path到會用到的lib的路徑


如果core 檔沒有產生在當前目錄下

sudo bash -c "echo core-%e-%p-%t > /proc/sys/kernel/core_pattern"

說明:

  • %% – 符号%
  • %p – 进程号
  • %u – 进程用户id
  • %g – 进程用户组id
  • %s – 生成core文件时收到的信号
  • %t – 生成core文件的时间戳(seconds since 0:00h, 1 Jan 1970)
  • %h – 主机名
  • %e – 程序文件名

这样更改只是临时的,要想永久生效可以通过更改配置文件:

vim /etc/sysctl.conf

添加一行:kernel.core_pattern=core-%e-%p-%t

sysctl -p让配置立刻生效


REF

https://www.796t.com/content/1549015229.html

https://blog.csdn.net/linyt/article/details/6749235

沒有留言:

張貼留言