• arm-linux gdb远程调试


    一般交叉编译已经自带了 gdb 和 gdbserver
    路径:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

     如果交叉编译器自带了 gdb 和 gdbserver 的话只需要将 gdbserver 拷贝到开发板根文件系统
    的/bin 目录下

    编写一个测试应用
     

    1. #include <stdio.h>
    2. #include <unistd.h>
    3. int main(int argc, char *argv[])
    4. {
    5. unsigned int times = 0;
    6. while(1) {
    7. printf("runing times:%d\r\n", times);
    8. times++;
    9. sleep(1);
    10. }
    11. }
    arm-linux-gnueabihf-gcc gdbtest.c -o gdbtest -g//编译测试程序,注意-g 选项

    一切准备就绪以后就可以使用GDB进行调试了,确保ubuntu和开发板可以进行网络通信。
    在开发板中输入如下命令:
    gdbserver 192.168.1.253:2001 gdbtest //启动开发板上的 gdbserver
     

    接着在 ubuntu 中输入如下命令启动 gdb 调试工具:
    arm-linux-gdb gdbtest
     

    最下面的(gdb)行用于输入命令,输入如下命令连接到开发板上:
    target remote 192.168.1.251:2001 //连接到开发板上
     

    l 命令
    l 命令(list)用于列出所有程序源码,


    b 命令
    b 命令(break)用于设置断点,也可以用缩写“b”,后面可以跟具体的函数或者行号,比如
    “break main”表示在 main 函数处设置断点,“break 11”在第 11 行设置断点。

    c 命令
    c 命令用于运行到断点处,输入 c 命令程序就会运行,直到下一个断点处,
     

    s 命令
    s 命令(step)是单步运行执行,此函数会进入到函数里面。
     

    n 命令
    n 命令(next)也是单步运行,但是 n 命令不会进入到函数里面。
     

    p 命令
    p 命令(print)用于打印某个变量值。
     

    q 命令
    q 命令(quit)用于退出调试,开发板上的 gdbserver 也会停止。
     

    常用命令:

              start:开始执行程序,在main函数的第一条语句停下来,简写:s。

              list:显示多行源代码,简写:l。

              break 行号:设置断点,程序到断点的位置会停下来 ,简写:b。

              continue:继续程序运行,直到遇到下一个断点              ,简写:c。

              print:打印内部变量值

              kill:终止正在调试的程序

             watch:在程序中设置一个监测点,监视变量的变化

            display:跟踪查看某一个变量,每次停下来都显示它的值

           delete 行号:删除一个断点或监测点

           step:执行下一条语句,如果该语句为函数调用,则进入函数执行其中第一条语句

           finish:如果已经进入了某函数,而想退出该函数返回到它的调用函数,可使用该命令

          next:单步执行,不可跟踪到函数内部

          jump:设定了多个断点,会跳到另一个断点继续执行,在源程序中的另一点开始运行

         whatis 变量或函数:显示某个函数或变量的类型

           set variable 设置变量的值

          backtrace bt :查看函数调用的信息对栈

          backtrace n = bt n : n 是一个正整数,表示只打印栈顶上n层的栈信息 ;

                                           n 是一个负整数,表示只打印栈底下n层的栈信息 

        frame n :查看栈帧 ,n是一个从0开始的整数,是栈中的层编号。

       up  n:表示向栈的上面移动n层,可不打n,表示上移动一层

       down n:表示向栈的下面移动n层,可不打n,表示下移动一层
     

  • 相关阅读:
    java random随机数的用法
    【动手学深度学习】课程笔记 00-03 深度学习介绍及环境配置
    基于SSM的文化培训学校网站的设计与实现
    一起学数据结构(5)——栈和队列
    日料西餐厅餐品预约小程序的作用是什么
    Qt+ECharts开发笔记(四):ECharts的饼图介绍、基础使用和Qt封装百分比图Demo
    java计算机毕业设计家教管理系统MyBatis+系统+LW文档+源码+调试部署
    C++学习笔记一: 变量和基本类型
    设计模式---抽象工厂模式
    React Context源码是怎么实现的呢
  • 原文地址:https://blog.csdn.net/L1153413073/article/details/125622344