交叉编译的程序如何调试

1. 调试工具

工具链gdb+gdbserver

2. 调试方法

  1. 需要使用交叉编译工具链先完成gdbserver的编译,然后放到target上,之后使用如下命令启动
1
2
3
gdbserver host_ip:port /path/to/program args...

./gdbserver 192.168.1.2:1234 ./nncase_test_v2.elf ${model}/test.kmodel ${model}/input_0_0.bin ${model}/nncase_result_0.bin
  1. 在host上使用gdb连接
1
2
3
4
gdb
target remote target_ip:port

target remote 192.168.1.22:1234
  1. 之后在host上正常使用gdb调试命令进行调试
1
2
3
4
b rvv_memcpy    # 设置断点
run # 开始执行
stepi # step in
info registers # 查看寄存器

3. host配置问题

  1. 安装nfs

    1
    sudo apt-get install nfs-kernel-server
  2. 配置共享文件夹

    1
    2
    3
    4
    vim /etc/exports

    #添加下面内容
    /home/curio/project/k230/rebuild-ir/k230_linux 192.168.1.22(rw,sync,no_root_squash,no_all_squash) #192.168.1.22也可以替换成 * 表示任意地址可以访问
  3. target上配置

    1
    2
    3
    ifconfig eth0 192.168.1.22  # 配置target ip
    mkdir /modules #
    mount -t nfs -o nolock 192.168.1.2:/home/curio/project/k230/rebuild-ir/k230_linux/ /modules #nfs挂载host目录