蜂鸟E203系列——Linux调试(GDB+Openocd)
本文基于文章《蜂鸟E203系列——利用 Hbrid-E-SDK 环境开发程序》
GDB 简介
GDB(GNU Project Debugger),是 GNU 工具链中的调试软件。 GDB 是一款应用非常广泛的调试工具,能够用于调试 C、 C++、 Ada 等等各种语言编写的程序,它提供如下功能:
下载或者启动程序
通过设定各种特定条件来停止程序
查看处理器的运行状态,包括通用寄存器的值,内存地址的值等
查看程序的状态,包括变量的值,函数的状态等
改变处理器的运行状态,包括通用寄存器的值,内存地址的值等
改变程序的状态,包括变量的值,函数的状态等

GDB 可以用于在主机 PC 的 Linux 系统中调试运行的程序,同时也能用于调试嵌入式硬件,在嵌入式硬件的环境中,由于资源有限,一般的嵌入式目标硬件上无法直接构建 GDB 的调试环境(譬如显示屏和 Linux 系统等),这时可以通过 GDB + GdbServer 的方式进行远程 (remote) 调试,通常而言 GdbServer在目标硬件上运行,而 GDB 则在主机 PC 上运行。
GDB 常用指令表
| 命令 | 描述 |
|---|---|
| load file | 动态连接file |
| jump | 使当前程序跳转到某一行或某个地址 |
| info br | 查看断点信息 |
| break function | 在指定的函数或行号设置断点 |
| step | 进入函数内部 |
| next | 执行下一行代码,但是不进入函数内部 |
| continue | 恢复程序运行,直到碰到下一个断点 |
常用命令参考链接
https://www.cnblogs.com/jasonLiu2018/p/11494214.html
https://www.cnblogs.com/lsgxeva/p/8024867.html
OpenOCD 简介
为了能够支持 GDB 对其进行调试, 蜂鸟 E203 使用 OpenOCD 作为其 GdbServer 与 GDB 进行配合。OpenOCD (Open On-Chip Debugger) 是一款开源的免费调试软件,由社区共同维护,由于其开放开源的特点,众多的公司和个人使用其作为调试软件,支持大多数主流的 MCU 和硬件开发板。
GDB 调试
在hbird-e-sdk目录下执行
1 编译目标文件
make dasm PROGRAM=helloworld BOARD=hbird-e200 CORE=e203 DOWNLOAD=flash USE_NANO=1 NANO_PFLOAT=0
2 下载运行
make upload PROGRAM=helloworld BOARD=hbird-e200 CORE=e203 DOWNLOAD=flash USE_NANO=1 NANO_PFLOAT=0
3 打开OpenOCD,与开发板进行连接
make run_openocd PROGRAM=helloworld BOARD=hbird-e200 CORE=e203 DOWNLOAD=itcm

3 重新打开一个终端并打开GDB
make run_gdb PROGRAM=helloworld BOARD=hbird-e200 CORE=e203 DOWNLOAD=itcm

4 在 GDB 界面进行调试:main函数设置断点
break main
5 查看断点信息
info break

6 从程序main入口执行,程序停在第一个断点处
jump main

7 从断点处单步调试
n

蜂鸟E203系列——Linux调试(GDB+Openocd)的更多相关文章
- 蜂鸟E203系列——Linux开发工具
欲观原文,请君移步 Vivado安装 vivado是运行工程的工具,所以必须安装 后台回复[vivado2017]可获取vivado 2017.4 | 后台回复[vivado2020]可获取vitis ...
- 蜂鸟E203系列——Linux下运行hello world例程
欲观原文,请君移步 创建程序 在 -/hbird-e-sdk-master/software 路径下创建一个"helloworld"中文件夹 在 -/hbird-e-sdk-mas ...
- linux中gdb的可视化调试
今天get到一个在linux下gdb调试程序的技巧和大家分享一下!平时我们利用gcc进行编程,进行程序调试时,观察程序的跳转等不是这么直观.都是入下的界面! 但是如果我们在编译连接时上加了-g命令生成 ...
- Linux知识(5)----LINUX下GDB调试
命令 解释 示例 file 加载被调试的可执行程序文件.因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径. (gdb) file gdb-sample r c Run的简 ...
- 一文入门Linux下gdb调试(二)
作者:良知犹存 转载授权以及围观:欢迎添加微信号:Conscience_Remains 总述 今天我们介绍一下core dump文件,Core dump叫做核心转储,它是进程运行时在突然崩溃的 ...
- Linux下GDB调试C/C++
首先先编译程序并生成调试符号: gcc -g -c main.cpp gcc -o exefile main.o 以上的exefile为可执行程序的文件名 然后: gdb exefile 可以开始gd ...
- Linux之GDB调试介绍与应用20170601
一.GDB调试命令 描述 backtrace(或bt) 查看各级函数调用及参数 finish 连续运行到当前函数返回为止,然后停下来等待命令 frame(或f) 帧编号 选择栈帧 info(或i) ...
- Linux学习——Gdb基本调试方法&&多线程调试
1.Gdb的基本调试 示例代码 //e.c #include <stdio.h> void debug(char *str) { printf("debug info :%s\n ...
- 【转载】Linux之gdb
转载自:http://blog.chinaunix.net/uid-22312037-id-3812061.html 一.常规调试 gdb是Linux下常用的程序调试工具,当然前提是用 ...
随机推荐
- 入门springMVC
前言 开始学习springMVC整理的笔记,今天这一篇是回顾第一个springMVC程序. 环境 大致文件结构 先是要创建好一个普通maven工程,加入一些servlet包以及mvc支持的jar包,如 ...
- 分析ThreadLocal的弱引用与内存泄漏问题
目录 一.介绍 二.问题提出 2.1内存原理图 2.2几个问题 三.回答问题 3.1为什么会出现内存泄漏 3.2若Entry使用弱引用 3.3弱引用配合自动回收 四.总结 一.介绍 之前使用Threa ...
- 操作-写入excel
xlwt模块 封装 #!/usr/bin/env python # -*- coding: utf-8 -*- import xlwt import xlrd from xlutils.copy im ...
- C++ Primer Plus(一)
完整阅读C++ Primer Plus 系统重新学习C++语言部分,记录重要但易被忽略的,关键但易被遗忘的. 预备 1.C++相对于C增加了最关键的两项,面向对象和范型编程. 处理数据 2.对于变量明 ...
- 通用!Python保存一个对象的方式
参考资料: https://kite.com/python/answers/how-to-save-a-dictionary-to-a-file-in-python 通过如下的代码,可以将Python ...
- vim中的替换操作
在vim中 :s(substitute)命令用于查找并替换字符串.使用方法如下: :s/<find-this>/<replace-with-this>/<flags> ...
- Spring系列.AOP原理简析
Spring AOP使用简介 Spring的两大核心功能是IOC和AOP.当我们使用Spring的AOP功能时是很方便的.只需要进行下面的配置即可. @Component @Aspect public ...
- 《Redis开发与运维》
第1章 初识Redis 1. Redis介绍: Redis是一种基于键值对(key-value)的NoSQL数据库. 与很多键值对数据库不同的是,Redis中的值可以是由string(字符串).has ...
- cron计划任务
格式 crontab -e [-u 用户名] ##编辑:注意,每项工作都是一行. crontab -l [-u 用户名] ##查看 crontab -r [-u 用户名] #清除 分 时 日 月 周 ...
- Build completed with 1 error and 0 warnings in 20 ms
今天运行Idea,好端端的项目居然报了这个莫名其妙的错误Build completed with 1 error and 0 warnings in 20 ms. 首先排查下代码是否有问题,然后我就建 ...