linux内核调试环境搭建-1 Ubuntu10 .10下编译安装qemu

ubuntu14.04的qemu环境搭建 文章目录前言ubuntu镜像获取官方资料的获取安装步骤安装原生的ubuntu拷贝所需资料内核编译启动qemu挂载qemu的根文件系统到本地不带GUI带GUI 前言 最近在拜读宋宝华老师的《Linux设备驱动开发详解-基于最新的linux4.0内核》,但是他只提供了windows下的虚拟机,因此mac用户就有点难受了。昨天自己鼓捣了一下,完成了mac上整个环境的搭建,今天在windows上重新搭建一... 阅读详情

      内核调试一般比应用层程序调试困难很多,主要因为内核是系统开机后执行的第一个程序,这使得用于一般应用程序的调试方法无法使用在内核上。自由软件社群开发了一些特殊方法解决这问题。 这些方法中最方便的方法莫过于 KGDB 的使用。KGDB 是个一特殊的内核辅助工具,除了在内核代码中加入了一些调试代码外也提供一个 gdbstub 用于和远程 gdb 调试程序联机用。以前,这样一个使用远程 gdb 调试内核的开发需要在一般linux内核上打 KGDB 补丁(patches)同时编译时使用特殊编译设置来完成。 可喜的是,至 linux-2.6.xx(xx多少记不清了)后的版本内核已经正式将 kgdb 加入为主流核心发布的一部份。换句话说,内核开发者几乎不需花任何额外的功夫就可使用 kgdb。 此外,kgdb 成为主流内核发行一部份也代表他的稳定性及实用性受到社群的肯定。


    由于kgdb的方便易用,大大提高了linux平台下驱动开发者的效率。本文以及后面一系列文章从最基本的开始详细描述了如何搭建一个linux驱动调试环境。如何加载模块开始调试内核模块,如何调试模块的初始化函数。

kvm系统的前端是qemu-kvm,工作在用户空间,给用户提供一套方便的kvm虚拟化工具集合。下面来介绍一下qemu-kvm-0.11.0的编译过程。

 

1、下载

wget http://sourceforge.net/projects/kvm/files/qemu-kvm/0.11.0/qemu-kvm-0.11.0.tar.gz/download

mv download qemu-kvm-0.11.0.tar.gz

tar -xzvf qemu-kvm-0.11.0.tar.gz

2、安装其他库

sudo apt-get install  libpci-dev

sudo apt-get install  libsdl1.2-dev 


 

3、编译安装qemu

cd qemu-kvm-0.11.0

./configure --prefix=./install --target-list="i386-softmmu x86_64-softmmu i386-linux-user x86_64-linux-user" --disable-debug-tcg --disable-xen --disable-kvm

这个配置 可以根据自己的需要来修改。

make

sudo make install

 

4、将qemu添加到环境变量

进入目录      /usr/local/bin

为 qemu-system-x86_64创建符号链接:

$ sudo ln -s qemu-system-x86_64 qem

打开/etc/profile文件在末尾添加

PATH="$PATH:/usr/local/bin"

export  PATH

使环境变量生效,在终端输入:

source /etc/profile

 

另外打开一个终端输入qemu可见可以正常启动。

 

但是发现这时提示找不到kvm。

Ubuntu10.10系统有自带的kvm内核模块。

 

打开文件/etc/modules

在其中加入想要加载的模块名

kvm

kvm-amd

这样在再次重启的时候会自动加载模块 kvm  kvm-amd

注意不要加扩展名 .ko

关于在在高版本ubuntu上编译遇到问题:

/home/xianjian/work/x86/qemu-kvm-1.2.0/qemu-timer.c:534: undefined reference to `timer_gettime'
/home/xianjian/work/x86/qemu-kvm-1.2.0/qemu-timer.c:547: undefined reference to `timer_settime'
qemu-timer.o: In function `dynticks_start_timer':
/home/xianjian/work/x86/qemu-kvm-1.2.0/qemu-timer.c:506: undefined reference to `timer_create'
qemu-timer.o: In function `dynticks_stop_timer':
/home/xianjian/work/x86/qemu-kvm-1.2.0/qemu-timer.c:520: undefined reference to `timer_delete

  今天在 ubuntu14.04 上编译qemu-kvm-1.2.0 (从sourceforget上下载的 ,qemu-kvm-1.1.0版本也有同样的问题) 遇到了上述的错误(但是在ubuntu 12.04上不会出现),通过google搜索发现一篇文章可以比较好的解决这个问题:

smilejay.com/2012/06/qemu-kvm_compilation_installation/

根据一个patch文件修改 configure 文件:

qemu-kvm version: 1.2.0
compile host: ubuntu 14.04
——————————————–
+Signed-off-by: Natanael Copa
+Signed-off-by: Blue Swirl
+Signed-off-by: Ting Liu
+—
+ configure | 9 +++++++–
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff –git a/configure b/configure
+index 999375a..29b3e30 100755
+— a/configure
++++ b/configure
+@@ -2444,13 +2444,18 @@ fi
+ cat > $TMPC <<EOF
+ #include
+ #include
+-int main(void) { clockid_t id; return clock_gettime(id, NULL); }
++int main(void) {
++ timer_create(CLOCK_REALTIME, NULL, NULL);
++ return clock_gettime(CLOCK_REALTIME, NULL);
++}
+ EOF
+
+ if compile_prog “” “” ; then
+ :
+-elif compile_prog “” “-lrt” ; then
++# we need pthread for static linking. use previous pthread test result
++elif compile_prog “” “-lrt $pthread_lib” ; then
+ LIBS=”-lrt $LIBS”
++ libs_qga=”-lrt $libs_qga”
+ fi
+
+ if test “$darwin” != “yes” -a “$mingw32″ != “yes” -a “$solaris” != yes -a \
+–
+1.7.9.7
+

用vim 打开configure 文件找到以下地方:

##########################################
# Do we need librt
cat > $TMPC <<EOF
#include <signal.h>
#include <time.h>
int main(void) { return clock_gettime(CLOCK_REALTIME, NULL); }
EOF

if compile_prog "" "" ; then
  :
elif compile_prog "" "-lrt" ; then
  LIBS="-lrt $LIBS"
fi

 然后按照上面的patch 打补丁修改为:

##########################################
# Do we need librt
cat > $TMPC <<EOF
#include <signal.h>
#include <time.h>
int main(void) {  timer_create(CLOCK_REALTIME, NULL, NULL); return clock_gettime(CLOCK_REALTIME, NULL); }
EOF

if compile_prog "" "" ; then
  :
elif compile_prog "" "-lrt $pthread_lib"; then
  LIBS="-lrt $LIBS"
  libs_qga="-lrt $libs_qga"
fi


重新执行 configure 配置即可。

收藏的一个比较好的链接:

http://smilejay.com/2012/06/qemu-kvm_compilation_installation/

qemu + busybox + gdb 构建linux内核调试环境 调试环境主要涉及以下工具,及对应版本号qemu 4.2.0。 阅读详情

相关推荐

ubuntu14.04下qemu调试linux内核

编译内核 解压缩内核【这里使用linux-3.10.58】make menuconfig:在kernel hacking中选中compile the kernel with debug infomake bzImage:编译内核 更新gdb 由gdb-7.8.tar.gz下载最新的gdb(7.8)到/opt目录下【目录随意选】解压缩:tar zxvf gdb-7.8.

devbarry的专栏 2598

Linux vivado SDK posix定时器“undefined reference to `timer_create‘”

Linux vivado SDK posix定时器问题 已经添加了time.h的情况下 “undefined reference to `timer_create'” 已经添加了time.h的情况下

weixin_63876185的博客 1868

Windows下快速搭建MSYS2开发环境(含GCC与MinGW配置)

本文详细介绍了在Windows系统下快速搭建MSYS2开发环境的完整流程。通过使用pacman包管理器,可以便捷地安装GCC编译器与MinGW-w64工具链,并配置系统环境变量。文章还涵盖了从基础安装、系统更新到编译开源项目的实战指南,帮助开发者高效构建原生Windows程序,显著提升C/C++开发效率。

weixin_29213827的博客 538

linux下如何搭建QEMU虚拟MINI2440 的配置与搭建

Step1,获取qemu for mini2440以及mini2440 u-boot的源码 主要有两种方法:   (1)有直接下载,解压安装 下载网址有 https://code.google.com/p/ (Google国内被封,不可用) http://repo.or.cz/w/qemu/mini2440.git(经测试可用)   (2)通过Git clone 直接联网下

supperThomas的专栏 2681

Nmap的介绍、安装 并进行网络扫描

Nmap概述 Nmap(Network Mapper(网络映射器))是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。 正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。

Cheney ' blog 2万+

玄机-Linux权限维持-后门

玄机-Linux权限维持-后门

m0_46439803的博客 763

使用timer_create时链接librt(lrt)的问题

因为要用到POSIX的定时器,编译时要动态链接librt(glibc的实时动态库)。 makefile链接时需要添加-lrt参数: gcc -lrt a.o,b.o............. -o my_program 这个makefile在本地机器上运行得好好的,系统是Ubuntu 11.04 Desktop。 但是在服务器上就出现如下错误: my_timer.o: In functi...

云计算? 1237

wsl2 配置ubuntu 固定ip

wsls ubuntu 设置固定ip

musk1212的博客 2616

"undefined reference to" 问题解决方法

最近在 Linux 下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func’ 关于undefined reference 这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。 1. 链接时缺失了相关目标文件(.o) 测试代...

KgdYsg的博客 9万+

STM32使用 jansson 处理 Json格式字符

STM32 Json 字符的创建和解析1、Json简介2、jansson库的下载安装和报错解决2.1、下载安装2.2、STM32工程文件中导入jansson库2.3、报错解决2.4、修改堆栈空间3、Json 字符的创建4、Json 字符的解析4.1 纯键值对4.2、键的值是一个对象4.3、键的值是一个数组   STM32处理json字符串一般不常见,大部分都是不需要处理的数据,但是在一些通信中需要处理上传或者下传的数据,就别比如在物联网中,有一部分数据就是以json格式传输的,那么就需要对数据经行解析。我简

青烨慕容 7416

蓝桥杯STM32G431RBT6学习——GPIO

蓝桥杯STM32G431RBT6学习——GPIO

weixin_44098974的博客 2233

Linux内核5.10编译 与调试

centos7 编译内核5.10下载内核准备编译环境配置模板编译参考 下载内核 linux 5.x下载地址 # 将压缩包放到自己指定的目录,解压 tar -zxf linux-5.10.tar.gz 准备编译环境 # 安装依赖,遇到缺啥依赖,就安装啥 yum -y install flex bison libssl-dev openssl-devel elfutils-libelf-devel ncurses-devel # 编码过程中遇到,cc1: error: -Werror=date-time: n

antRain的博客 1万+

(第14天)Veritas NetBackup(NBU) 配合 RMAN 脚本备份 Oracle 数据库

NBU(Veritas Netbackup)是企业中比较常用的备份软件,通常用于备份企业使用中的系统,数据库,文件等等,通常是搭配 Oracle RMAN 来进行备份 Oracle 数据库。

LuciferLiu_DBA 1642

Linux内核的编译、安装、调试

Linux内核的编译、安装与调试。

Eddy的博客 4626

YOLOv8 眼底病变检测(眼底照片)详细说明

本文介绍了基于YOLOv8的眼底病变自动检测系统。该系统可识别糖尿病视网膜病变、青光眼等5类常见眼底病变,包括微动脉瘤、出血点等特征。核心技术包含图像预处理、模型训练、病变检测与量化分析三个模块,采用1024×1024高分辨率输入,针对医学图像特点优化数据增强策略。系统支持批量处理、可视化标注和临床报告生成,提供病变数量、面积密度和严重程度评分等量化指标。特别强调医学合规性要求,需专业医生参与数据标注和模型验证,符合医疗器械认证标准。该系统可作为眼科医生的辅助诊断工具,提高眼底病变筛查效率。

u010117029的博客 133

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

QEMU搭建arm64 Linux调试环境

https://zhuanlan.zhihu.com/p/345232459 简述 本文记录了在ubuntu20.04上,使用QEMU搭建arm64 的Linux开发调试环境。可以方便得使用gdb调试内核,既可以作为学习linux kernel源码的实验环境,也可以用于ARM64内核驱动开发调试环境。 版本和环境信息如下: 平台:ubuntu20.04 kernel版本:linux 5.10 qemu版本:5.2.0 qemu模拟环境:ARM64 gcc version :10.2.0 交叉编.

eydwyz的专栏 2825

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

QEMU入门1:ubuntu22.04搭建QEMU运行环境

我的环境经常被人搞坏掉😡,所以写篇文档记录下QEMU编译、运行环境搭建的流程。

Aruko的博客 6120

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

利用QEMU+GDB搭建Linux内核调试环境

前言 对用户态进程,利用gdb调试代码是很方便的手段。而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试。 其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qemu就是一种。 qemu是一款完全软件模拟(Binary translation)的虚拟化软件,在虚拟化的实现中性能相对较差。但利用它在测试环境中gdb调试Linux内核代码,是熟悉Linux内核代码的一个好方法。 本文实验环境: ubuntu 20.04 busybox-1.32.1 Linux kerne

嵌入式与Linux那些事的博客 2452

ubuntu--qemu调试linux内核环境搭建

<br />下载qemu源码:http://wiki.qemu.org/Download<br />我下的是qemu-0.12.4.tar.gz<br /> <br /> <br />zecho@zecho-laptop:~$ tar zxvf qemu-0.12.4.tar.gz zecho@zecho-laptop:~$ cd qemu-0.12.4   <br /> <br /> <br />需要在configure之前安装几个组件<br />zecho@zecho-laptop:~$ sudo

cha_echo的专栏 4354

linux内核调试环境的搭建(使用qemu)

这里说明下,本人调试的内核版本是2.6.11.12,为什么去调试这么“古老”的版本?原因不多说了,你手头也许正拿着ULK3,而它针对的内核版本正是2.6.11,有比这更好的理由吗?而且这个版本不算旧,已不算新,我认为还算不错,想想当下还有如此多的人在学习0.11的道路上笃定的前行,讨论关于版本的事情,真的没什么意义。只要你认为有用,能学到东西,做什么别人都不会说你错! 接下来,我尽量

stonesharp的专栏 2089

qemu的安装与内核的调试初步

首先问qemu是什么? 在完成了linux3.0的编译工作之后,我们希望能对linux的内核进行调试,而qemu给我们提供了这样的环境。在网上看了一些介绍,感觉有点儿不明白,大体上说qemu是虚拟机性质的,但是虚拟机跟我们要进行的调试工作有什么关系呢?问了师兄,他的解释通俗易懂

SunnyBeiKe的专栏 4914

使用 VSCode + qemu 搭建 Linux 内核调试环境

Posted on2019-10-24byhowardlau 目录[隐藏] 1编译调试版 Linux 内核 1.1Ubuntu 1.2CentOS 1.3Fedora 2制作 initramfs 3启动内核并调试 4配置 VSCode 4.1.vscode/c_cpp_properties.json 4.2.vscode/tasks.json 4.3.vscode/launch.json 4.4.vscode/settings.json ...

eydwyz的专栏 3059

Ubuntu下安装qemu gdb调试linux Arm64内核

###安装qemu #####ddd

On the way 3856

Ubuntu18.04+Qemu调试Linux内核实验记录

Ubuntu18.04+Qemu调试Linux内核实验记录 实验环境 操作系统:Ubuntu18.04 依赖项安装: sudo apt-get install texinfo sudo apt-get install libncurses5-dev sudo apt-get install m4 sudo apt-get install flex sudo apt-get install bis...

Slowly_Run的博客 1897
下一篇: linux内核调试环境搭建-2 用busybox搭建
xianjian_x
博客等级 码龄14年 231粉丝 43原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值