zoukankan      html  css  js  c++  java
  • segment fault 定位 与 远程 gdb

    远程 GDB 

    首先 ,Target 为 ARM开发板 (IP =  192.168.1.200),HOST 为 Ubuntu 14.04 虚拟机 (IP = 192.168.1.4)

      1. 下载  gdb源码  http://ftp.gnu.org/gnu/gdb/

      2. 解压后利用交叉编译工具链 ,对 gdb 源码交叉编译。i   ./configure --host=aarch64-poky-linux --prefix=/home/install   ii make     iii  make install

      3.拷贝 /home/install 下编译产物到 开发板的根文件目录/usr/ 下 ,我的是 /exports/rfs/usr/

      4. 交叉编译 应用程序  hello.c   $CC -g -o hello  hello.c   拷贝hello 到 /export/rfs/下 

         5. 给开发板上电 ,进入控制台,执行  , 其中  192.168.1.4:1234 为 Host IP 地址  : port 口 

    root@mint:/# gdbserver 192.168.1.4:1234 ./hello 
    Process ./hello created; pid = 2267
    Listening on port 123

      6. 在 HOST 平台上执行  $GDB /exports/rfs/hello  进入:

    0x0000ffffb7fd2d00 in ?? () from target:/lib/ld-linux-aarch64.so.1
    (gdb)

      输入 (gdb) target remote 192.168.1.200:1234  (192.168.1.200:1234 为TARGET IP 地址 和相同的port口)

      7. 在 main 入口处打断点   (gdb)break main

      8. 开始 debug (gdb)continue

    至此完成 远程 调试 开发板

     

    segment fault 定位

       运行应用程序的时候,遇到最多的问题就属  segment fault 了,下面介绍如何利用 core 文件 定位 segment fault 。

      1. 设置 core dump 的路径在 /tmp 目录下 文件名为  core+ 程序名   : echo "/tmp/core-%e-%p" > /proc/sys/kernel/core_pattern

      2. 设置  core 文件的大小限制  ulimit -c unlimited

      3. 运行 出错的应用程序  ./ xxxxx

      4. 报出segment fault 后就可以在  /tmp/下查看到   core-xxxxx-xxx 文件 

      5. 把core 文件拷贝出来放在 根目录下 / 

      6. 在 PC 上 利用  $GDB  /exports/rfs/xxxxx  core-xxxxx-xxx 就可以 显示出错代码的位置了。

              $(GDB) 为 (交叉编译 gdb)  

  • 相关阅读:
    httprunner运行报错问题:base url missed
    Locust性能模块浅谈
    如何对HTMLTestRunner 进行输出print 进行修改
    网易UI自动化测试工具Airtest中导入air文件中的方法
    如何在 idea 2019.3.4 中导入Github的项目并使用Git同步项目?
    Win10 Microsoft Store 微软商店 Error 0x00000193 解决方法
    读书笔记 |《计算机组成结构化方法》-01
    [MR] MapReduce 总结、回顾与吐槽
    [Git] 极简Git——关于Git的简要回顾
    [FlyWay] FlyWay工作原理
  • 原文地址:https://www.cnblogs.com/hutiann/p/8259640.html
Copyright © 2011-2022 走看看