zoukankan      html  css  js  c++  java
  • Hisi 使用GDB调试(远程调试)

    环境

    宿主机:ubuntu 18.04 x86_64
    海思SDK版本:Hi3516EV200_SDK_V1.0.1.2

    说明文档:Hi3516EV200_SDK_V1.0.1.2/osdrv/tools/board/gdb/readme.txt

    !!! 不知道是否操作有误,测试时发现 7.9.1 版本 gdbserver 调试 next 不进入内部无断点的 if\while\for 等表达式,因此这里重新下载一个高版本的gdb来重新编译。

    编译 gdb

    tar xvf gdb-8.1.1.tar.gz
    cd gdb-8.1.1/
    ./configure --target=arm-himix100-linux --prefix=/opt/gdb.8.1/ -v
    make -j8
    make install
    

    重置软连接

    rm /opt/hisi-linux/x86-arm/arm-himix100-linux/bin/arm-himix100-linux-gdb
    ln -s /opt/gdb.8.1/bin/arm-himix100-linux-gdb /opt/hisi-linux/x86-arm/arm-himix100-linux/bin/arm-himix100-linux-gdb
    

    注意

    如果在x86_64平台上使用,需要修改gdb/remote.c 中的部分代码,否则运行调试时会出现Remote 'g' packet reply is too long错误。

    • 找到代码
    if (buf_len > 2 * rsa->sizeof_g_packet)
        error (_(“Remote ‘g’ packet reply is too long: %s”), rs->buf);
    
    • 替换为
    if (buf_len > 2 * rsa->sizeof_g_packet) {
        rsa->sizeof_g_packet = buf_len ;
        for (i = 0; i < gdbarch_num_regs (gdbarch); i++) {
            if (rsa->regs->pnum == -1)
                continue;
            if (rsa->regs->offset >= rsa->sizeof_g_packet)
                rsa->regs->in_g_packet = 0;
            else
                rsa->regs->in_g_packet = 1;
        }
    }
    
    • 重新编译

    编译 gdbserver

    cd gdb-8.1.1/gdb/gdbserver/
    ./configure --target=arm-himix100-linux --host=arm-himix100-linux
    make -j8 CC=arm-himix100-linux-gcc
    file gdbserver
    

    说明

    gdbserver是在板端使用的需要把它拷贝到开发板上,与电脑端的gdb通过网络交互

    开始调试

    准备测试文件

    vi main.c #写一个简单的测试代码
    arm-himix100-linux-gcc main.c -o main -g #编译DEBUG版本
    

    把调试文件和 gdbserver 下载到板端,假设宿主机IP:192.168.1.66,板端IP:192.168.1.127,测试端口5000

    board

    ./gdbserver 192.168.1.66:5000 main
    

    ubuntu

    ./arm-himix100-linux-gdb ./main
    (gdb) target remote 192.168.1.127:5000    #连接板端gdbserve
    (gdb) set solib-search-path /lib          #指定库搜索路径
    

    调试 SDK

    sample/venc为例,需要修改Makefile添加

    CFLAGS += -g
    CFLAGS := $(filter-out -O2,$(CFLAGS))
    
  • 相关阅读:
    [BUUCTF]PWN3——warmup_csaw_2016
    分页
    关系与外键约束
    连接查询
    自关联
    子查询
    视图
    事务
    索引
    绘图笔记
  • 原文地址:https://www.cnblogs.com/llil/p/14488358.html
Copyright © 2011-2022 走看看