在qemu平台使用gdb调试程序

news2024/9/24 11:30:47

1、使用gdb在qemu上调试程序

1.1、第一步:在qemu上运行程序并开启gdb server

在这里插入图片描述

  • qemu-system-riscv64 -nographic -machine virt -m 128M -smp 1 -kernel …/bin/test.elf -s -S

1.2、第二步:使用gdb客户端连接gdb server

在这里插入图片描述

-x:指定gdb的配置文件,这个不是必须的。使用配置文件可以提高调试效率,将每次开始gdb调试都需要输入的命令,提前写到配置文件中。

配置文件实现的效果和在命令行手动敲命令是一样的。

2、使用TUI模式调试

在这里插入图片描述

命令功能
layout src显示源码窗口
layout asm显示汇编窗口
layout regs在之前的窗口上再显示寄存器窗口
layout split同时显示源码、汇编窗口
layout next显示下一个layout
layout prev显示上一个layout

3、快捷方式

  • ctrl键 + n:下一条命令(功能和在linux命令行使用“下键”来查看之前输入过的命令)

  • ctrl键 + p:上一条命令(功能和在linux命令行使用“上键”来查看之前输入过的命令)

  • 切换焦点:

    • focus next:切换到下一个显示窗口(切换焦点,也就是可以通过“上下键”来翻看窗口代码)
    • focus prev:切换到上一个显示窗口(切换焦点,也就是可以通过“上下键”来翻看窗口代码)
    • 总结:focus next和focus prev是同时显示两个窗口时使用
  • 查看窗口源码的快捷键:

    • PGUP键:向上翻页
    • PGDN键:向下翻页
    • 上键和下键:上下滑动查看源码
  • shell + linux命令:在gdb命令行使用linux命令

4、gdb常用指令

在这里插入图片描述

5、断点设置指令

break:设置断点,简写b
	b func              断点函数
	b file:linenum   断点文件行号
	b *address       断点地址

enable/disable:使能/去使能断点
	en/dis  1         使能/去使能断点1
	en/dis             使能/去使能所有断点

delete:删除断点
	delete 1            删除断点1
	delete               删除所有断点

info breakpoints:显示所有断点信息

checkpoint:记录断点状态,用于恢复断点。不可用于多线程
	checkpoint
	restart 1
	
Info checkpoint:显示checkpoint信息

watch:跟踪变量值,当变量值发生变化时,暂停
	watch    a 局部变量,在跳出当前函数时会失败
	watch    *0x600af0
	
Info watchpoint:显示watchpoint信息

6、解决SecureCRT软件显示乱码

在这里插入图片描述
在这里插入图片描述

  • 显示乱码的原因是字符编码格式不匹配,SecureCRT软件字符编码默认是“Default”模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1315517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QEMU源码全解析 —— virtio(2)

接前一篇文章: 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM》源码解析与应用 —— 李强,机械工业出版社 特此致谢! 上一回对于virtio进行了简介,并说明了其基本原理以及框架。对…

大创项目推荐 深度学习 python opencv 实现人脸年龄性别识别

文章目录 0 前言1 项目课题介绍2 关键技术2.1 卷积神经网络2.2 卷积层2.3 池化层2.4 激活函数:2.5 全连接层 3 使用tensorflow中keras模块实现卷积神经网络4 Keras介绍4.1 Keras深度学习模型4.2 Keras中重要的预定义对象4.3 Keras的网络层构造 5 数据集处理训练5.1 …

玩转树莓派之系统安装篇

介绍 树莓派是树莓派基金会下的一个明星产品(单板计算机),已经迭代到第五代了;它性能强大、开源、拓展性强、体积小,搞物联网开发的人基本都听说过这个玩意!笔者手上刚好有一块4B的板子,让我们…

动态通讯录(并不难都能拿下)

文章目录 🚀前言🚀通讯录实现动态通讯录的初期准备模块化框架搭建 🚀实现接口函数 🚀前言 铁子们好啊!今天咱们来整一个有意思的玩意——通讯录,相信大家对通讯录并不陌生,那接下来就跟着阿辉把…

Linux--LAMP 平台部署及应用

5.1 LAMP平台概述 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统,Apache 网站服务器、MySQL数据库服务器&…

互联网加竞赛 python+opencv+机器学习车牌识别

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于机器学习的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分工作量:4分创新点:3分 该项目较为新颖,适…

EnlightenGAN论文阅读笔记

EnlightenGAN论文阅读笔记 论文是2019年IEEE的EnlightenGAN: Deep Light Enhancement without Paired Supervision.这篇论文是低光增强领域无监督学习的开山之作。 论文链接如下:arxiv.org/pdf/1906.06972.pdf 文章目录 EnlightenGAN论文阅读笔记出发点**出发点1**&…

linux应用程序直接return与exit的区别

在Linux应用程序中,可以使用return语句直接从main函数返回。这将导致程序终止并返回给操作系统。然而,有时候使用exit函数比直接使用return语句更有优势,以下是一些原因: 清理资源:exit函数可以确保在程序终止之前执行…

Aurora8B10B(二) 从手册和仿真学习Aurora8B10B

一. 简介 在上篇文章中,主要结合IP配置界面介绍了一下Aurora8B10B,这篇文章将结合文档来学习一下Aurora8B10B内部的一些细节 和 相关的时序吧。文档主要是参考的是这个 pg046-aurora-8b10b-en-us-11.1 二. Aurora8B10B内部细节 在手册上,对…

pytorch中数据预处理模块:transforms详解

1 tranforms概述 1.1 torchvision介绍 torchvision是pytorch的计算机视觉工具包,主要有以下三个模块: torchvision.transforms:提供了常用的一系列图像预处理方法,例如数据的标准化,中心化,旋转&#xff…

设计模式——外观模式(结构型)

引言 外观模式是一种结构型设计模式, 能为程序库、 框架或其他复杂类提供一个简单的接口。 ​ 问题 假设你必须在代码中使用某个复杂的库或框架中的众多对象。 正常情况下, 你需要负责所有对象的初始化工作、 管理其依赖关系并按正确的顺序执行方法等。…

记录 | 不限速下载vscode

在下载 vscode 的时候往往会遇到一个问题就是下载的贼慢 下面教不限速下载的方式 将下面红框内的内容进行替换 替换为: vscode.cdn.azure.cn然后你会发现下载速度就起飞了

开辟“护眼绿洲”,荣耀何以为师?

文 | 智能相对论 作者 | 佘凯文 俗话说,眼睛是心灵的窗户,可如今,人们对于这扇“窗户”的保护,似乎越来越不重视。 据人民日报今年发布的调查显示,中国眼病患病人数2.1亿,近视患者人数多达6亿&#xff0…

智能优化算法应用:基于头脑风暴算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于头脑风暴算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于头脑风暴算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.头脑风暴算法4.实验参数设定5.算法结果6.…

救命~这件国风旗袍女儿穿也太好看了吧

这款中式提花改良版旗袍 一眼就戳中了我的心巴 整件精美刺绣好看不大众 两侧网纱的加持增添仙气缥缈感 穿上厚实不显臃肿 袖口处拼接毛毛徒增可爱俏皮的感觉 穿上过年过节满满的焦点呀~

C语言学习----字符串数组和字符串指针

🌈在C Primer Plus 第六版中第11章的字符串和字符串函数讲的很好~ 对于字符串和字符串指针的用法又更深入了解了一些~ 🐬 本blog为 C Primer Plus 的记录~ ☘️对于字符串指针和数组更加深入了解~ 🌺省流:1️⃣字符串常量被储存在…

【第1期】SpringSecurity基于角色和权限的细粒度接口权限控制

SpringSecurity 细粒度权限控制 一、Role 和 Authority的区别 角色用来表示某一类权限的集合,权限粒度更小,方便细粒度控制 二、创建用户、角色、权限相关表: CREATE TABLE common_user (id bigint(20) NOT NULL COMMENT 主键id,login_na…

1.electron之纯原生js/jquery的桌面应用程序(基础篇)

如果可以实现记得点赞分享,谢谢老铁~ Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 将 Chromium 和 Node.js 嵌入到了一个二进制文件中,因此它允许你仅需一个代码仓库,就可以撰写支持 Windows、…

linux离线安装libreoffice

安装步骤 1.安装JAVA环境jdk 2.下载离线安装包libreoffice 3.安装libreoffice 4.配置字体防止乱码 1.安装JAVA环境JDK 这个网上自己搜下,资料漫天飞 2.下载libreoffice离线安装包 下载地址 Download LibreOffice | LibreOffice - Free Office Suite - B…