linux(armv7/8)下gdb的安装及查看方法
1. gdb安装
1.1 将gdb-10.1.tar.gz拷贝的/usr/local/目录下
(可以拷贝到任何你愿意的Linux目录下)或者进入 /usr/local中下载地址:http://ftp.gnu.org/gnu/gdb/
sudo wget http://ftp.gnu.org/gnu/gdb/gdb-10.1.tar.gz
1.2 解压 gdb-10.1.tar.gz
sudo tar -zxvf gdb-10.1.tar.gz
1.3 编译arm-linux-gdb ,这里可能需要添加权限
target指明编译生成的GDB用于调试ARM-LINUX程序,prefix指明安装目录,注明调试平台, 到目录 gdb-10.1.tar.gz下
cd gdb-10.1.tar.gz
$sudo ./configure --target=arm-linux --prefix=/usr/local/arm-gdb -v
1.4 编译安装程序: (这个需要的时间比较长,耐心等待哟~)
$sudo make -j4
1.5 安装gdb软件,gdb-linux-arm
# make install -j4
1.6 把arm-linux-gdb加入环境变量
(:/usr/local/arm-gdb/bin)
#gedit /etc/environment
1.7 更新环境变量
#source /etc/environment
1.8 确认安装成功
gdb -v
/usr/local/gdb-7.8.1$ gdb -v
GNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "aarch64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
可以在/usr/local/arm-gdb/bin目录下看到如下三个可执行文件
arm-linux-gdb arm-linux-gdbtui arm-linux-run
查看
firefly@firefly:/usr/local/gdb-7.8.1$ ls /usr/local/arm-gdb/bin/
arm-linux-gdb arm-linux-run
2.0 支持交叉编译
所以在使用交叉gdb时需要用交叉编译链编译出arm开发板上的执行文件,在PC机上运行能打开arm可执行文件的gdb工具,这就是 arm-linux-gdb
解压gdb源码编译gdb的工具:
tar xvf gdb-7.8.1.tar.gz
mkdir arm-gdb
./configure --target=arm-cortex_a9-linux-gnueabi --prefix=/home/xxx/tools/gdb-7.8.1/arm-gdb/
make -j4
make install -j4
其中几个参数如下:
--target 指定目标机交叉编译器前缀,比如--target=arm-cortex_a9-linux-gnueabi ,交叉编译链
--host 指定编译后的运行主机,默认就是 x86_64-linux,如果要运行在PC上就不指定,他会选择系统的编译工具,如果是运行在arm上就用交叉编译链
--prefix 指定要安装的目录
添加环境变量
vim ~./brashrc
export PATH=$PATH:/home/xxx/tools/gdb-7.8.1/arm-gdb/bin
或者 export 查看后之直接安装
执行如下就说明安装成功
arm-cortex_a9-linux-gnueabi-gdb -v
3. 编译gdbserver
cd gdb/gdbserver
./configure --target=arm-cortex_a9-linux-gnueabi --host=arm-cortex_a9-linux-gnueabi
make CC=arm-cortex_a9-linux-gnueabi -j4
就会在当前路径下生成 gdbserver,然后将gdbserver拷贝到arm开发板的/usr/bin/下
4.使用
得到上边两个必须的工具后,就看怎么使用
因为交叉编译的gdb基于网络通信来完成gdb调试,所以就需要分别在ARm端和PC端运行各自的工具来保持通信
首先在PC端编译出ARM端使用的可执行二进制文件
arm-cortex_a9-linux-gnueabi-gcc main.c -g
然后把 a.out拷贝到ARM端
在ARM端执行:
gdbserver 192.168.9.101:1234 a.out //ARM的IP地址:自定义的一个端口
在PC端执行:
arm-cortex_a9-linux-gnueabi-gdb a.out
在PC端的gdb中连接ARM的gdbserver
(gdb) target remote 192.168.9.101:1234
你会看到ARM端出现
Remote debugging from host 192.168.9.68
这就说明gdb连接已经建立现在就可以使用gdb调试了
相关文章:

【数据排序】车厢重组
车厢重组 【题目描述】 在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序…

adb部署记录
文章目录[1 \[NDK部署\]](https://dl.google.com/android/repository/android-ndk-r10e-linux-x86_64.zip?hlzh_cn)1.1 首先在本地部署adb(NDK,已经完成编译,可以直接运行)1.2 其次在远端部署 gdbserver2 系统依赖配置2.1 拉去远…

“”开天眼“”,天地分割效果
每日一句:Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. (源于:nodejs的官网) 翻译:nodejs使用了事件驱动,非阻塞I/o的模型,这些模型是的它运行起来轻便而且有效率…

分水岭分割合并
void segMerge(Mat & image, Mat & segments, int & numSeg) {// 对一个分割部分进行像素统计vector<Mat> samples;// 统计数据更新int newNumSeg numSeg;// 初始化分割部分for (int i 0; i < numSeg; i){Mat sampleImage;samples.push_back(sampleImag…

post请求中的序列化
1.application/x-www-form-urlencoded序列化:encodeGET方式,会将表单中的数据(键值对)经过urlencode编码后追加到url中。POST方式,会将表单中的数据经过urlencode编码后放在request body 中。 ajax 之POST请求…

Vim----ma6174
ma6174 linux vim https://www.runoob.com/linux/linux-vim.html 具体详见:https://github.com/ma6174/vim https://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html set sw4 set ts4 set et set smarttab set smartindent set lbr set fomB set sm set…

FloodFill 图像分割
#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" #include <iostream> using namespace cv; using namespace std; // 初识化参数 Mat image, gray, mask; int ffillMode 1; int loDiff 20, upDiff 20; int conn…

一起来学习PID
一起来学习PID

【Hello CSS】第一章-CSS的语法与工作流
作者:陈大鱼头github: KRISACHAN在上一篇【Hello CSS】的序章CSS起源中介绍了CSS的诞生原因以及发展历史,了解了CSS的存在意义。从正篇篇开始将会正式开始介绍CSS这门语言的特点与功能。本篇则主要介绍CSS的语法与CSS是如何工作的。 CSS语法 …

Gitlab CI(一)
Gitlab CI流程设计与思考 repo添加ci完整流程 新增Repo CI注册需要开发者提供的信息和我们这边需要反馈的信息。 CI注册需要提供的信息: 1. Repo url 2. 需要注册哪些CI服务器:Linux CI服务器、Windows CI服务器、rk3399性能测试CI服务、rk3399内存检测…

redhat6.5 yum源
首先在自己的电脑上安装Redhat6.5(本经验用的是Redhat6.5-64位的系统),然后把Redhat6.5系统ISO镜像文件放到自己的电脑中(本经验是放在/root 下,切记自己的存放路经,以后不要再变动此路径和移动ISO文件&…

均值漂移图像分割
#include "opencv2/highgui/highgui.hpp" #include "opencv2/core/core.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> using namespace cv; using namespace std; //颜色通道分离 static void MergeSeg(Mat& img…

Unreal Engine 4 优化教程
本教程旨在帮助开发人员提升基于虚幻引擎(Unreal Engine*4 (UE4))开发的游戏性能。在教程中,我们对引擎内部及外部使用的一系列工具,以及面向编辑器的最佳实践加以概述,还提供了有助于提高帧速率和项目稳定性的脚本。查看详情 转载于:https:/…

Gitlab CI更多内容学习(二)
文章目录1 CI含义2.1 多平台统一发布2.2 平台解耦单一发布3. CI job按需触发4. Gitlab CI/CD管道配置5. Job和Runner6. Gitlab CI预定义变量1 CI含义 GitLab CI / CD管道配置参考 GitLab CI/CD pipeline configuration reference 使用在每个项目中调用的YAML文件配置GitLab …

spring读取配置文件的几种方式
场景 假如有以下属性文件dev.properties, 需要注入下面的tag tag123 通过PropertyPlaceholderConfigurer <bean class"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name"location" value"dev.prop…

特征尺度变换实现
void CreateScaleSpace(cv::Mat srcImage,std::vector< std::vector<Mat> > &ScaleSpace,std::vector< std::vector<Mat> > &DoG) {cv::Size ksize(5, 5);double sigma; Mat srcBlurMat, up, down;// 高斯平滑GaussianBlur(srcImage, srcBlurM…

Flask基础-(模板)
概念:包含变量和运算逻辑的HTML,执行这些变量替换和逻辑计算工作的过程称为渲染 1.基本语法 a.{{ 。。。}}用来标记变量 b.{% %}用来标记语句 c.{{ 变量|过滤器 }} d.{# #}注释复制代码2.过滤器 safe:禁用转义;<p>{{ <em>…

GitLab CI流水线配置文件.gitlab-ci.yml详解(三)
GitLab CI流水线配置文件.gitlab-ci.yml详解 … contents:: 目录 本文讲解在 :ref:GitLab的汉化与CI持续集成gitlab-runner的配置 <configure_gitlab_i18n_and_create_gitlab_ci_with_gitlab_runner> 的基础上,对GitLab CI流水线配置文件 .gitlab-ci.yml 进…

elasticsearch-.yml(中文配置详解)
此elasticsearch-.yml配置文件,是在$ES_HOME/config/下 elasticsearch-.yml(中文配置详解) # Elasticsearch Configuration ## NOTE: Elasticsearch comes with reasonable defaults for most settings.# Before you set out to tweak and t…

SIFT 特征检测及匹配
#<opencv2/opencv.hpp> #include <opencv2/features2d/features2d.hpp> #include <opencv2/xfeatures2d/nonfree.hpp> #include <iostream>//using namespace cv::features2d; using namespace std; using namespace cv; // 计算图像的SIFT特征及匹配 …

详解Java中的复合视图设计模式
使用由多个子视图组成的复合视图。整个模板的每个子视图可以整体动态地包括在内,并且可以独立于内容来管理页面的布局。 Apache Tiles和SiteMesh 框架使用Composite View Design Pattern。 为简单起见,这种模式分为若干部分,如问题࿰…

CI流水线配置文件参数详解(一)
文章目录4. 参数详解(一)4.1 script4.2 image 指定使用Docker镜像。如 iamge:name ,暂时忽略。4.3 before_script 用于定义在所有作业之前需要执行的命令,比如更新代码、安装依赖、打印调试信息之类的事情。4.4 after_script4.5 stages 定义流水线全局可…

Elasticsearch的前后台运行与停止(rpm包方式)
对应,这es的下载,需要rpm包。 Elasticsearch-2.4.3的下载(图文详解) 建议用root用户 [rootdjt002 elasticsearch-2.4.3]$ pwd/usr/local/elasticsearch/elasticsearch-2.4.3 [rootdjt002 elasticsearch-2.4.3]$ rpm -ivh elastic…

SURF 特征检测及匹配
#include <opencv2/opencv.hpp> #include <opencv2/xfeatures2d.hpp> #include <opencv2/xfeatures2d/nonfree.hpp> #include <iostream>using namespace cv::xfeatures2d; using namespace std; using namespace cv;// 计算图像的SURF特征及匹配 floa…

Mybatis源码阅读之三
2019独角兽企业重金招聘Python工程师标准>>> 由前面的系列二分析到MapperMethod的execute方法,我们接着分析MapperMethod。如下List-1: List-1 public class MapperMethod {private final SqlCommand command;private final MethodSignature method;publ…

Vim快捷键键位图
https://www.runoob.com/w3cnote/all-vim-cheatsheat.html

简单几步写一个laravel扩展包
为什么80%的码农都做不了架构师?>>> laravel使用composer来管理扩展包,理解composer和laravel的开发模式,可以通过简单的几个步骤,快速写出一个laravel扩展包。 全新的laravel5.4环境安装 composer create-project la…

ORB 特征检测与匹配
#include <opencv2/opencv.hpp> #include <opencv2/xfeatures2d.hpp> #include <opencv2/xfeatures2d/nonfree.hpp> #include <iostream>using namespace cv::xfeatures2d; using namespace std; using namespace cv; // 计算图像的ORB特征及匹配 cv::…

数据结构(队列实现篇)
在数据结构与算法中,队列queue是一种受限的线性储存结构,特殊之处在于它只允许在表的前端front进行删除操作,而在表的后端rear进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾…
Markdown编辑器使用
Markdown编辑器使用欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚…