当前位置: 首页 > news >正文

linux 单步启动_怎么搭建学习Linux内核的运行、调试环境?

正巧,我也是对 Linux 的网络协议栈实现感兴趣[1]。

首先,我认为你最好先说明你的日常的开发环境,是 x86 还是 ARM,是 32-bit 还是 64-bit,是普通 server 还是嵌入式。如果你跟我一样在普通 x86-64 server 上写 Linux 程序,那么我有一个独特的内核学习方法:把相关内核代码编译成用户态程序,然后就像阅读调试普通单线程程序那样学习内核的相关实现。各种现成的静态/动态代码分析工具都能用上[2],单步跟踪也很方便,丢包、乱序等情况也容易复现。目前我在 chenshuo/linux-study 大体上把基本的 TCP 代码跑通了,然后写了几篇笔记:

当然这个办法初始代价比较大,对于学习硬件平台无关的部分是比较适合的。以前也有人搞过,但是现在好像都没啥动静了。Linux Kernel Library

NUSE: Network stack in USerspacE (LibOS)

User Mode Linux (这个还活着,但是似乎跟 GDB 不是很兼容。)

chenshuo/4.4BSD-Lite2 (这个是我搞的,方便《TCP/IP 详解 第2卷》的读者阅读理解源码)

如果你对内核的其他部分感兴趣,可以用 QEMU + GDB 来单步跟踪内核代码运行。你可能需要用 busybox 做一个极简的 img,这样更容易关注你关心的逻辑。

相关文章:

  • openssl命令查看证书有效期_使用 openssl 生成证书
  • gcc离线安装 ubuntu 不用编译_ubuntu怎样无网络下源码安装g++
  • word文字上下间距怎么调_word文档里的文字上下左右之间的间距如何调整?
  • 云计算 码率适配限速_快手自研直播多码率标准对行业发布
  • perl数组硬引用_Perl语言学习之数组(Arrays)
  • grib1文件解析 python_在Python中使用JSON
  • concat合并的数组会有顺序么_Javascript中数组方法reduce的妙用之处
  • dqn在训练过程中loss越来越大_物流过程中的仓储风险越来越大,该如何规避?...
  • 关闭运动轨迹_配备业界领先的反射屏 华米Amazfit智能运动手表3评测
  • 克罗地亚第二狂想曲难度_不可能的狼兔cp!剧情好看不靠大尺度,《动物狂想曲》监督专访...
  • sqlserver去重记录_细说SQLServer索引原理
  • python爬虫scrapy安装_Python之Scrapy爬虫框架安装及使用详解
  • echarts 柱状图设置边框_Echarts图表的悬浮框位置的调整
  • nacos修改密码_SpringBoot接入Nacos作为配置中心
  • 中如何调取api_什么是区块头?如何通过区块链API获得区块头信息?| Tokenview
  • Android交互
  • Consul Config 使用Git做版本控制的实现
  • CSS相对定位
  • C语言笔记(第一章:C语言编程)
  • iOS编译提示和导航提示
  • iOS小技巧之UIImagePickerController实现头像选择
  • javascript面向对象之创建对象
  • Object.assign方法不能实现深复制
  • PHP的类修饰符与访问修饰符
  • Vue组件定义
  • 对象管理器(defineProperty)学习笔记
  • 工作中总结前端开发流程--vue项目
  • 前端面试题总结
  • 驱动程序原理
  • 深入浅出webpack学习(1)--核心概念
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​ArcGIS Pro 如何批量删除字段
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #pragma data_seg 共享数据区(转)
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (C语言)共用体union的用法举例
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (补)B+树一些思想
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)shell调试方法
  • (转)四层和七层负载均衡的区别
  • .NET Core 2.1路线图
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .net 生成二级域名
  • .Net 中Partitioner static与dynamic的性能对比
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .net反编译工具
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录