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/

   

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

半导体Memory的分类

文章目录 略图introRAM & ROM 略图 intro 存储器是嵌入式系统中用于存放数据和程序的模块。有些存储器是MCU内置的,有些是扩展的。 存储器嵌入式系统中常见且重要的外设模块。搞清楚存储器的分类是从事嵌入式开发工作的一项基本功。 从功能上,存储器…

利用小红书笔记详情API:为内容运营提供强大的支持

利用小红书笔记详情API,内容运营者可以获得对小红书平台上的笔记内容的深入洞察,从而为其运营工作提供强大的支持。以下是该API如何支持内容运营的几个关键方面: 获取笔记内容与数据: API允许内容运营者直接获取小红书平台上的笔记…

视频号小店开店需要准备什么资料?

我是电商珠珠 很多想要开通视频号小店的新手并不知道开通视频号小店需要准备什么资料。 今天我就来给大家详细的讲一下。 视频号小店分为三种类型,一种是普通企业店,一种是个体工商店,还有一种是品牌企业店。 先来说说普通企业店 1、营业…

面向对象编程(高级)

面向对象编程(高级) 1、类变量和类方法 (1) 概念 类变量,也称为静态变量,是指在类级别声明的变量。它们与特定类相关联,而不是与类的实例(对象)相关联。每个类变量只有…

【docker】cgroups资源限制

目录 一、cpu资源控制 1、 设置cpu使用率上限 2、设置cpu资源占用比(设置多个容器时才有效)Docker通过–cpu-shares指定cpu份额,默认为1024,值为1024的倍数。 3、设置容器绑定指定的CPU 三、内存资源控制 四、磁盘IO配额控制…

恭喜 Databend 上榜 2023 开源创新榜「优秀开源项目 」

近日,国家科技传播中心见证了一场开源界的重要事件:由中国科协科学技术传播中心、中国计算机学会、中国通信学会和中国科学院软件研究所联合主办,CSDN 承办的 2023 年开源创新榜专家评审会圆满落幕。由王怀民院士担任评委会主任,评…

MR实战:词频统计

文章目录 一、实战概述二、提出任务三、完成任务(一)准备数据1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 (二)实现步骤1、创建Maven项目2、添加相关依赖3、创建日志属性文件4、创建词频统计映射器类5、创建词频统计归并…

如何搭建HomeAssistant智能家居管理平台并实现公网访问内网管理界面

目录 前言 一、下载HomeAssistant镜像 二、内网穿透HomeAssistant,实现异地控制智能家居 三、使用固定域名访问HomeAssistant 结语 前言 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊如何搭建HomeAssistant智能家居管理平台…

数据结构之哈希——学习笔记

今天看网课学习了哈希的数据结构,写下这一篇博客记录自己的学习过程。 1.哈希简介: 我们发现某些时候映射到小集合的时候会同时有多个值映射到一个下标里面,所以接下来是这种情况的解决方案1: 我们考虑当两个数字映射之后的结果…

Python startswith()和endswith()方法及 index()方法:检测字符串中是否包含某子串

Python startswith()和endswith()方法 Python 字符串变量还可以使用 startswith() 和endswith() 方法。 startswith()方法 startswith() 方法用于检索字符串是否以指定字符串开头,如果是返回 True;反之返回 False。此方法的语法格式如下: …

向日葵远程工具的使用Mysql5.7的安装与配置

目录 一、向日葵远程安装与使用 二、Mysql 5.7 安装与配置 2.1 安装 2.2 Navicat Premium 12 测试连接 本机测试连接 外部访问MySQL测试连接 三、思维导图 一、向日葵远程安装与使用 简介: 向日葵远程控制是一款用于对远程PC进行管理和服务的软件,拥有5秒快速…

isEmpty 和 isBlank 的用法区别,居然一半的人答不上来.....

isEmpty 和 isBlank 的用法区别 isEmpty系列isBank系列 hi!我是沁禹~ 也许你两个都不知道,也许你除了isEmpty/isNotEmpty/isNotBlank/isBlank外,并不知道还有isAnyEmpty/isNoneEmpty/isAnyBlank/isNoneBlank的存在, come on ,让我们一起来探索org.apache…

网络调试 TCP,开发板用静态地址-入门4

用两台电脑(无线网络)做实验 1.1, 在电脑A上设置为Server如下: 选择TCP Server后,直接跳出用本机IP做为“本地主机地址” 1.2在 电脑B上设置为Client, 远程主机地址设置为Server的 IP 1.3, 在A, B两台电脑上能够互相发送数据 用…

[C语言]程序设计(四)

大家好,这里是争做图书馆扫地僧的小白。非常感谢各位的支持,也期待着您的关注。 目前博主有着C语言、C、linux以及数据结构的专栏,内容正在逐步的更新。 希望对各位朋友有所帮助同时也期望可以得到各位的支持,有任何问题欢迎私信与…

架构(1)

目录 1.如何理解架构的演进? 2.如何理解架构的服务化趋势? 3.架构中有哪些技术点? 4.谈谈架构中的缓存应用? 5.在开发中缓存具体如何实现? 1.如何理解架构的演进? 初始阶段的网站架构应用服务和数据服…

OpenAI ChatGPT-4开发笔记2024-02:Chat之text completion

API而已 大模型封装在库里,库放在服务器上,服务器放在微软的云上。我们能做的,仅仅是通过API这个小小的缝隙,窥探ai的奥妙。从程序员的角度而言,水平的高低,就体现在对openai的这几个api的理解程度上。 申…

自存react crash course(1)

1.创建一个react 项目 确保有node.js 创建名为react-task-tracker的react项目 npx create-react-app react-task-tracker 启动项目 npm start2.项目结构 所有组件都是放在src下面的 3. jsx // jsx语法 和html很像&#xff0c;class用的是className来使用css的样式<div…

vue3 实现关于 el-table 表格组件的封装以及调用

一、示例图&#xff1a; 二、组件 <template><div class"sn-table" :class"props.colorType 1 ? : bg-scroll"><el-table :data"tableData" :row-class-name"tableRowClassName" height"500" style"…

Ubuntu20 编译 Android 12源码

1.安装基础库 推荐使用 Ubuntu 20.04 及以上版本编译&#xff0c;会少不少麻烦&#xff0c;以下是我的虚拟机配置 执行命令安装依赖库 // 第一步执行 update sudo apt-get update//安装相关依赖sudo apt-get install -y libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-de…

海思SD3403/SS928V100开发(12)OSD显示开发

1.前言 由于需要显示一些硬件状态,暂时还没开发GUI; 所以可以使用海思平台的OSD硬件叠层来做, 下面是做的一些调试记录 2. 翻阅MPP文档 有几个地方需要注意的地方 建议使用OVERLAYER类型,支持模块多很多,还可以直接叠VO模块 3. sample测试 3.1 sample region samp…