Linux GDB 调试

在这里插入图片描述


文章目录

  • 一、Qemu
  • 二、Gdb
    • vscode 调试
  • 三、RootFs


一、Qemu

qemu 虚拟机
Linux内核学习

Linux 内核调试 一:概述
Linux 内核调试 二:ubuntu20.04安装qemu
Linux 内核调试 三:《QEMU ARM guest support》翻译
Linux 内核调试 四:qemu-system-arm功能选项整理
Linux 内核调试 五:qemu简单使用测试
Linux 内核调试 六:qemu-system-arm仿真vexpress-a9
Linux 内核调试 七:qemu网络配置
Linux 内核调试 八:qemu使用initramfs文件系统
Linux 内核调试 九:Linux 内核调试环境搭建
Linux 内核调试 十:搭建ARM GDB的调试环境

$ sudo ip tuntap add dev tap0 mode tap
$ sudo ip link set dev tap0 up
$ sudo ip address add dev tap0 192.168.2.128/24
$ ifconfig eth0 192.168.2.120 netmask 255.255.255.0# tap 模式
./qemu-system-arm -M vexpress-a9 -m 512M -kernel zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb vexpress-v2p-ca9.dtb -nographic -net nic -net tap,ifname=tap0,script=no,downscript=no# user 模式
qemu-system-x86_64 -M pc -kernel bzImage -drive file=rootfs.ext2,if=virtio,format=raw -append "rootwait root=/dev/vda console=tty1 console=ttyS0"  -net nic,model=virtio -net user -nographic

Linux 虚拟网络设备
qemu与宿主机网络通信配置
qemu虚拟机配置网络

二、Gdb

# 1、服务器B上启动 gdbserver
# 执行命令:gdbserver + A_IP:1234(端口号) + 执行程序名字 + 执行程序参数,如
gdbserver 1234 test     # 其中1234为开启的端口,test为要调试的程序(注意服务器防火墙问题)# 3、本机调试
# a、在本机A上执行:
gdb test
# b、进入gdb后输入:
target remote 服务器B的IP:端口
#c、连接成功后,在A电脑上就可以正常调试了

gdb远程调试
gdb远程调试
gdbserver使用教程
用图文带你彻底弄懂GDB调试原理

gdb调试常见命令详细总结(附示例操作)
GDB常用命令详解

vscode 调试

  • launch.json
      .vscode 下 launch.json ,配置调试信息。
// launch.json
{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "gdb debug","type": "cppdbg","request": "launch",// "miDebuggerServerAddress": "172.18.25.30:1234","miDebuggerServerAddress": "127.0.0.1:1234","program": "${workspaceRoot}/vmlinux","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"logging": {"engineLogging": false},"MIMode": "gdb"}]
}

Linux内核学习

三、RootFs

BuildRoot 围炉夜话
ramdisk文件系统的制作以及移植

# 制作镜像文件:
# 使用dd命令建立一个16MB的文件系统映像ramdisk
dd if=/dev/zero of=ramdisk bs=1Mcount=16# 因为ramdisk只是一个块设备,只有将其格式化为特定的文件系统后才能使用,我们将其格式化ext2格式
mke2fs -F -v -m0 ramdisk# 挂载ramdisk,并拷贝制作好的根文件系统到mnt目录下
sudo mount -o loop ramdisk mnt/

   

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

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

相关文章

基于SSM框架和Layui框架的管理系统

计算机毕业设计:打造安全、高效的信息管理系统在这个数字化时代,信息安全和高效管理是至关重要的。为了帮助学校或机构更好地管理和保护信息,我们为您设计了一套功能强大的信息管理系统。该系统利用先进的技术,结合MD5加密&#x…

使用Go语言的HTTP客户端进行并发请求

Go语言是一种高性能、简洁的编程语言,它非常适合用于构建并发密集型的网络应用。在Go中,标准库提供了强大的HTTP客户端和服务器功能,使得并发HTTP请求变得简单而高效。 首先,让我们了解为什么需要并发HTTP请求。在许多应用场景中…

【Nacos专题】Nacos如何建立与应用服务之间的通信渠道?

作为Spring Cloud Alibaba微服务架构实战派上下册和RocketMQ消息中间件实战派上下册的作者胡弦。 Nacos是一款面向云原生服务的注册中心和配置中心技术解决方案,既然要与服务打交道,那么通信渠道是必不可少的组件,那么Nacos是如何建立与应用…

【后端已完成,前端更新ing】uniapp+springboot实现个人备忘录系统【前后端分离】

目录 (1)项目可行性分析 (一)技术可行性: (二)经济可行性: (三)社会可行性: (2)需求描述 功能模块图 用例图&#…

Xcode15在iOS12系统上崩溃的原因

1.1.崩溃在_dyld_start,如图: 崩溃截图 解决办法:在other link flags添加-ld64 注意:该办法只能解决运行真机,archive出来的包依然报错闪退...... 1.2 SwiftUI导致iOS12及以下系统闪退问题 SwiftUI是iOS13开始使用&…

(NeRF学习)NeRF复现 win11

目录 一、获取源码二、环境三、准备数据集1.下载数据集方法一:官方命令方法二:官网下载数据集 2.修改配置 四、开始训练1.更改迭代次数2.开始训练方法一:方法二: 3.使用预训练模型 五、NeRF源码学习 一、获取源码 git clone http…

Blazor 问题记录

1&#xff09;使用Ant 样式。结果弹窗提示怎么都出不来。 只要在App.razor 加最后一句即可 <Router AppAssembly"typeof(App).Assembly"><Found Context"routeData"><RouteView RouteData"routeData" DefaultLayout"typeof…

C#之反编译之路(一)

本文将介绍微软反编译神器dnSpy的使用方法 c#反编译之路(一) dnSpy.exe区分64位和32位,所以32位的程序,就用32位的反编译工具打开,64位的程序,就用64位的反编译工具打开(个人觉得32位的程序偏多,如果不知道是32位还是64位,就先用32位的打开试试) 目前只接触到wpf和winform的桌…

什么是负载均衡?什么情况下又会用到负载均衡

什么是负载均衡 在大型的网络应用中&#xff0c;使用多台服务器提供同一个服务是常有的事。平均分配每台服务器上的压力、将压力分散的方法就叫做负载均衡。 [利用 DNS来实现服务器流量的负载均衡&#xff0c;原理是“给网站访问者随机分配不同ip”] 什么情况下会用到负载均…

芯课堂 | LVGL基础知识(三)

概述 LVGL进度条对象上有一个背景和一个指示器。指示器的宽度根据进度条的当前值进行设置。 如果对象的宽度小于其高度&#xff0c;则可以创建垂直进度条。 不仅可以设置进度条的结束值&#xff0c;还可以设置进度条的起始值&#xff0c;从而改变指示器的起始位置。 LVGL进度…

使用EasyExcel导出百万条数据

使用EasyExcel导出百万条数据 应用是基于100W条数据进行的测试 首先&#xff1a;导入相关需要的依赖&#xff1a; <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.16</version></depend…

jquery获取子元素的一些方法

jquery获取子元素的一些方法 1.通过id,class等选择器 2.通过父元素进行find查找 3.通过父元素的children进行查找 注意:find和children的区别,代码已给出详细解释,想要真正理解,还是得靠代码.光看不练那都是纸上谈兵 <!DOCTYPE html> <html><head><m…

springboot系列——IDEA创建项目并运行

springboot Spring Boot是为了简化Spring应用程序的开发和部署而产生的。 Spring Boot提供了一种基于约定优于配置的开发模式。它自动配置了Spring应用程序所需的各种组件和依赖&#xff0c;并提供了简单易用的命令行工具来构建和运行应用程序。 Spring Boot还提供了一套开箱…

Existing installation is up to date

这个报错是之前安装的docker没有删除干净 解决方法&#xff1a; 打开注册表编辑器 然后再搜索栏&#xff1a;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Docker Desktop 回车 找到Docker Desktop文件夹后&#xff0c;右键删除 重新安装Docker…

Security的入门和流程分析

Security的入门和流程分析 问题&#xff1a;访问一个controller方法之前进行一个权限验证&#xff1f; 在controller里面的每一个handler无论什么访问都要进行一个校验&#xff0c;但是对于login logout 验证码这种Handler处理器是放行的 1.使用过滤器拦截器 注意两者区别 过滤…

DataGrip 数据库备份

一、备份 1、找到需要被备份的数据库demo&#xff0c;右键>Import/Export>Export with mysqldump 2、配置路径 点击run&#xff0c;等待完成 导出成功 二、还原 选择 需要导入的数据库>右键>Import/Export>Restore with ‘mysql’ 点击run&#xff0c;刷…

基于seatunnel实现mysql同步clickhouse验证

场景&#xff1a; 需求想要实现mysql同步到clickhouse&#xff0c;seatunnel部署见前面文档linux环境seatunnel安装运行-CSDN博客。 官方说明文档 Clickhouse | Apache SeaTunnel mysql同步配置 server-id1 log_bin/var/lib/mysql/bin.log binlog_formatROW #binlog-do-db 具…

为什么说上了金蝶、用友系统后,下一步是部署BI?

经常有些不熟悉BI工具的用户问我&#xff1a;金蝶、用友系统和BI工具与什么区别&#xff0c;为什么说上了金蝶、用友系统后&#xff0c;下一步就是部署BI&#xff1f;这两个系统工具的功能不重叠吗&#xff1f; 首先&#xff0c;要了解金蝶、用友系统和BI工具的各自作用。 金…

理解 Node.js 中的事件循环

你已经使用 Node.js 一段时间了&#xff0c;构建了一些应用程序&#xff0c;尝试了不同的模块&#xff0c;甚至对异步编程感到很舒适。但是有些事情一直在困扰着你——事件循环&#xff08;Event Loop&#xff09;。 如果你像我一样&#xff0c;花费了无数个小时阅读文档和观看…

虚幻UE 增强输入-触发器

上一篇增强输入基础&#xff1a;虚幻UE 增强输入-第三人称模板增强输入分析与扩展 主要对第三人称模板的增强输入进行分析、复刻和扩展 本篇将会对增强输入中的触发器中的各参数进行讲解 文章目录 前言触发器参数1、下移TriggerDown2、已按下TriggerPressed3、已松开TriggerRel…