mbedtls环境搭建与gdb调试


mbedtls介绍

mbedTLS(前身PolarSSL)是TLS和SSL协议的实现,并且需要相应的加密算法和支持代码。

核心SSL库用C编程语言编写,并实现SSL模块,基本加密功能并提供各种实用功能。与OpenSSL和TLS的其他实现不同,mbedTLS设计为适合小型嵌入式设备,最小完整的TLS堆栈需要60KB的程序空间和64KB的RAM。它也是高度模块化的:每个组件,如加密函数,可以独立于框架的其余部分使用。因为mbedTLS是用C编程语言编写的,没有外部依赖,是最小巧的ssl代码库。高效、便于移植和集成,尤其适合嵌入式应用

环境搭建

1.下载源码

1.新建文件夹 git init

2.克隆源码git clone https://github.com/ARMmbed/mbedtls.git

3.切换分支 git checkout -b mbedtls-2.4 origin/mbedtls-2.4

4.查看分支git branch

2.编译源码

在总目录下使用Cmake编译:
cmake .
make
可能出现的错误:
在这里插入图片描述

如果已经安装了python:
在这里插入图片描述

安装pip: sudo apt install python3-pip
安装jsonschema:(缺啥安装啥)

在这里插入图片描述

3.运行demo

在/mbedtls_study/mbedtls/programs/ssl路径下有两个可执行文件client1和sever
先开启服务端:

在这里插入图片描述
再开启客户端:

在这里插入图片描述

此时服务端会显示:

在这里插入图片描述

到此,mbedtls环境搭建完成

gdb调试(GNU symbolic debugger)

首先,我说两句:
再厉害的程序员编写的程序也避免不了出错。程序中的错误主要分为 2 类,分别为语法错误和逻辑错误。
语法错误可以由编译器诊断出来,很容易就能发现并解决;
但是,逻辑错误,代码能够编译通过,可是运行结果不对。对于这类错误,就需要debug。

那什么是debug?
所谓Debug, 就是调试,让代码一步一步慢慢执行,跟踪程序的运行过程。比如,可以让程序停在某个地方,查看当前所有变量的值,或者内存中的数据;也可以让程序一次只执行一条或者几条语句,看看程序到底执行了哪些代码。

在这里插入图片描述

配置mbedtls的gdb环境

首先,我们需要将文件编译为debug版本。因为在linux系统下,默认生成的可执行程序是release版,但是调试需要debug版本。

我们需要在gcc或g++命令后加上限定符-g。这样生成的程序就是debug版本的。

所以要修改makefile文件。“-O2”改成“-O0”
第36行去掉ifdef和endef

之后重新make编译
在这里插入图片描述

调试

1.开始调试( r )

进入到可执行文件目录下,输入gdb开始调试。
r(run)全速运行

在这里插入图片描述

2.查看代码内容(l)

l +行号
默认生成10行,当指定行号时,会生成以指定行号为中间的共10行代码.

在这里插入图片描述

3.查看当前位置(where)

在这里插入图片描述

4.继续(c)

5.打断点

b+行号 在指定行打断点
info b 显示全部断点信息,也可以在b后加编号显示指定断点
d + 断点编号 删除指定断点,不加编号则删除全部
disable + 断点编号 关闭断点
enable + 变量编号 打开断点

在这里插入图片描述

6.逐语句、逐过程调试(s、n)

s 逐语句调试
n 逐过程调试

7.显示变量值(p)

在程序暂停时,键入"p 变量名"

在使用print命令时,可以对变量按指定格式进行输出,其命令格式为print /格式 + 变量名
其中常用的变量格式:x:十六进制;d:十进制;u:无符号数;o:八进制;c:字符格式;f:浮点数。

8.观察变量(watch)

watch + 变量
设置一个观察点,当变量被读出或写入时程序被暂停

9.查看内存

examine + 地址
examine 0xxxx 该命令用来查看内存中地址的值

10.显示寄存器内容

info reg
或者 i r

11.显示地址内容

用x命令可以显示地址内容,“x/格式 地址”。

12.打印栈帧指针

backtrace/bt bt 用来打印栈帧指针

backtrace/bt 也可以在该命令后加上要打印的栈帧指针的个数,查看程序执行到此时,是经过哪些函数呼叫的程序,程序“调用堆栈”是当前函数之前的所有已调用函数的列表(包括当前函数)。

13.退出(quit)

quit

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值