IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 【IMX6ULL笔记】-- GDB安装和VSCode图形调试 -> 正文阅读

[开发工具]【IMX6ULL笔记】-- GDB安装和VSCode图形调试

GDB 简介

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。

GDB 移植

方法1:

若ubuntu装了交叉编译器(正常来说肯定是装了的),那么就已经集成了自带gdb,只需要将gdbserver拷贝到开发板文件系统指定目录/bin/

请添加图片描述

测试gdb相关信息

请添加图片描述

方法2:

这个比较麻烦,需要官方网站获取 gdbgdbserver 源码,路径地址:Download GDB (sourceware.org)

解压编译步骤:

tar -vxzf gdb-9.1.tar.gz  //解压后生成gdb-9.1
cd gdb-9.1 
mkdir build  //需在gdb下新建 build 目录
cd build
../configure --target=arm-linux-gnueabihf --prefix=/home/l17/tool/gdb
make //编译
make install //安装

可能会出现问题:

gdb-9.1/missing: makeinfo: not found
...
Makefile:490: recipe for target 'gdb.info' failed
make[4]: *** [gdb.info] Error 127
...
Makefile:2006: recipe for target 'subdir_do' failed
make[3]: *** [subdir_do] Error 1
...
Makefile:851: recipe for target 'all' failed
make: *** [all] Error 2

解决办法:

sudo apt install texinfo

交叉编译gdbserver,执行完下面命令后会生成 gdbserver,将gdbserver拷贝到开发板文件系统指定目录/bin/ (建议方法1)

cd gdb-9.1/gdb/gdbserver  //进入到 gdbserver 目录
./configure --target=arm-linux-gnueabihf --host=arm-linux-gnueabihf
make CC=arm-linux-gnueabihf-gcc  //交叉编译 gdbserver

添加环境变量

配置完成后,需要进入ubuntu的/etc/profile修改环境变量

方法1:因为安装了工具链,通常不需要做任何修改
export PATH=/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin:$PATH
方法2:确定当前
export PATH=/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin:/home/
l17/tool/gdb/bin:$PATH

调试测试

写个简单的应用

/**************************************Start of file************************************/




/*--------------------------------------------------------------------------------------
Includes
*/
 #include <stdio.h>
 #include <unistd.h>

 int main(int argc, char *argv[])
 {
    unsigned int timerCnt = 0;

    while(1) 
    {
        printf("system runing times:%d\r\n", timerCnt);
        timerCnt++;
        sleep(1);
    }
}

/****************************************End of file************************************/
  • ubuntu交叉编译gdbApp.c输出执行文件
arm-linux-gnueabihf-gcc gdbApp.c -o gdbApp -g
  • 将执行文件拷贝到开发板(文件系统nfs)
cp gdbApp /home/l17/nfs/rootfs/
  • 启动开发板,执行gdb服务命令(输入调试主机,也就ubuntu ip地址)
gdbserver 192.168.0.67:2001 gdbApp //启动开发板上的 gdbserver

请添加图片描述

  • ubuntu启动gdb调试指定代码
arm-linux-gnueabihf-gdb gdbApp
  • gdb窗口输入如下命令,连接调试设备(需知调试设备ip地址)
target remote 192.168.0.50:2001

请添加图片描述

使用gdb相关命令执行调试工作(具体可以百度)

  • l 命令,擦寻源码
  • b命令,设置调试断点
  • c命令,执行下一个断点
  • q命令,退出调试

基于VSCode 界面调试

  • 新建文件夹: .vscode,新建文件:launch.json

请添加图片描述

  • 运行->添加配置 选择:c/c++:(gdb)启动,会自动生成配置信息(若需要知道红色字体具体描述啥意思,鼠标指向它会有提示信息,vscode yyds)

请添加图片描述

  • 修改生成的配置信息,修改信息如下:

请添加图片描述

{
    "configurations": [
    {
        "name": "gdbApp",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceFolder}/gdbApp",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "miDebuggerPath":
        "/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gdb",
        "miDebuggerServerAddress": "192.168.0.50:2001"
        "setupCommands": [
            {
                "description": "为 gdb 启用整齐打印",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            },
            {
                "description":  "将反汇编风格设置为 Intel",
                "text": "-gdb-set disassembly-flavor intel",
                "ignoreFailures": true
            }
        ]
    }
    ]
}

运行调试

  • 启动开发板,执行gdb服务命令(输入调试主机,也就ubuntu ip地址)
gdbserver 192.168.0.67:2001 gdbApp //启动开发板上的 gdbserver
  • 运行->启动调试

这下可以像 keil iar ccs vs 等等ide工具一样使用

请添加图片描述
参考:正点原子驱动开发指南等文档

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:32:17  更:2022-09-04 01:33:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 18:36:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计