单步调试kernel说明

恩,这个文档的目标是单步调试内核,从每一个工具软件的版本号到每一个命令,都有一个说明

ubuntu1204,32位

用vmware虚拟机安装该系统。

用64位系统时,gdb有bug。报错信息为:xxx太长。所以建议用32位系统

编译kernel 3.5.4

我下载的内核源码版本号3.5.4

为防止系统有些组件版本号较低,考虑如下两个命令更新系统:sudo apt-get update

sudo apt-get upgrade

sudo apt-get install build-essential

编译步骤:进入kernel的根目录后,命令如下:make menuconfig

//提示没有找到ncurses 安装一下:sudo apt-get install libncurses

//贾迪提示:可以用libncurses*

//Kernel Hacking –> 找到Compile the kernel with debug info” and

“Compile the kernel with frame pointers”

这两个选项,必须是选中的。其他,不用改设置,按照默认就行,直接按两下esc,选择保存并退出

make

qemu 1.4.0

安装

编译qemu报错缺glib,解决方法:sudo apt-get install libglib2.0-dev

缺autoconf,解决方法:sudo apt-get install autoconf automake libtool

用较老版本qemu时,或者直接用ubuntu source中的qemu时,单步调试失败。

使用:验证编译的内核已经可以通过qemu运行起来

qemu-system-i386 -kernel (kernel根目录)/arch/x86/boot/bzImage -initrd /boot/initrd.img-3.5.0-25-generic

注意:kernel后的参数为自己编译的内核,initrd参数为系统自带的文件,不同系统可能版本号不同

开始运行后,它会提示在vnc 102.0.0.1:5900 启动了。

然后在ubuntu桌面界面下,按下键盘中windows键(mac按command键),输入remote,找到“Remmina Remote

Desktop Client”软件,打开后,新建一个远程连接,注意 协议用VNC,server填写127.0.0.1:5900

在进入系统之后,输入uname -a或者uname -r来检验该系统是不是正在运行自己编译内核,看到3.5.4即可。

JDK(运行eclipse需要的java环境)下载了文件:jdk-7u9-linux-i586.gz

解压缩:tar -xzf jdk-7u15-linux-i586.gz

移动解压缩后的文件夹到目标位置sudo mkdir /usr/lib/jvm;

mv jdk1.7.0_15/ /usr/lib/jvm

设置符号链接:(注意更改为自己的版本号,install参数前面是两个短横)

sudo update-alternatives –install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_09/bin/javac 1

sudo update-alternatives –install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_09/bin/java 1

sudo update-alternatives –install /usr/bin/jar jar /usr/lib/jvm/jdk1.7.0_09/bin/jar 1

sudo update-alternatives –install /usr/bin/javadoc javadoc /usr/lib/jvm/jdk1.7.0_09/bin/javadoc 1

eclipse JUNO

eclipse插件:CDT

我下载的版本号:cdt-master-7.0.1-I201009241320

下载到的zip压缩包。不用解压缩,安装方式:打开eclipse,

Help按钮 –> Install New Software –> Add按钮

在弹出的对话框中,Name随便填一个就行,Location,点右侧的Archive按钮,选择刚下载的zip文件。

安装即可。

qemu+eclipse+gdb调试kernel启动qemu,命令如下:

qemu-system-i386 -s -S -kernel ~/Desktop/linux-3.5.4/arch/x86/boot/bzImage -initrd /boot/initrd.img-3.5.0-25-generic

-s 为默认远程调试,端口号1234

-S 为启动调试时,停止,等待gdb

-kernel 为自己编译出的bzp_w_picpath,一般放在内核根目录的arch/x86/boot/

-initrd 后面为自己ubuntu的某个镜像。

Window –>Preferences –> General –> Workspace,将“build automatically”去掉

Window –> Preferences –> c/c++ –> Indexer中,将Enable indexer取消

File->New->Project…–>c/c++ –> C project

Location处:选择自己的内核根目录文件夹

工程类型选择Makefile Project,EmptyProject

工具链选择,LinuxGCC

在Project Explorer中,右键自己的工程,选择Debug As –> Debug

Configurations,在弹出的对话框中双击“GDB Hardware

Debugging”,将会让你设置调试参数等。随意写一个Name,这个Name应该是这个调试配置文件的名字。

配置调试参数:在Main标签中,c/c++Application的框里,选择自己编译出来的vmlinux文件,该文件位置应该就在源码的根目录下。选中Disable auto build.

在Debugger标签中,GDB Command处填gdb,勾选use remote target,port number处填1234,因为qemu模拟器默认的远程端口就是1234.

在Startup标签中,去掉三个勾。

点击Debug,开始调试。

验证调试

我在init/main.c的第486行设置一个断点。

Window –> Show View –> Expressions,打开后,输入我要观测的变量名字,early_boot_irqs_disabled,等运行到该断点时,看到其值从false变为true,验证了基本调试功能正常。

如何使用gdb调试java虚拟机_Eclispe+qemu+gdb调试linux Kernel相关推荐

  1. gdb 调试kvm虚拟机_GDB+QEMU调试内核模块(实践篇)

    调试内核模块的方法有很多.最常用的,可能也是上手难度最低的就是使用prinfk打印出相关的调试信息,但是总给人的感觉不够geeek,所以这里描述一种能够使用gdb+qemu来调试内核的方法. 启动虚拟 ...

  2. gdb 调试java进程_使用GDB调试JNI代码

    本文链接:http://blog.csdn.net/kongxx/article/details/7329515 最近在碰到一段JNI代码不停的出现core dump,用gdb看了一下core文件,信 ...

  3. java的单步调试_Eclipse调试Java程序 可用于单步调试

    在Eclipse中交互式运行代码是其最强大的特性之一,使用JDT调试器,你可以逐行执行你的Java程序,检查程序不同位置变量的值,这个过程在定位代码中的问题时非常有用. 为了准备调试,你需要在代码中设 ...

  4. Leetcode怎么调试java代码,在Clion上调试LeetCode代码

    在Clion上调试LeetCode代码 在leetcode上做题调试起来总有些不方便,所以查阅了一些资料后,按以下配置,自我感觉效率还行,分享给大家.祝大家刷题愉快.并附上自己整理的leetcode4 ...

  5. idea 调试java技巧_Intellij IDEA Debug 调试技巧

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 F9:恢复程序 Alt+F10:显示执行断点 F8: 跳到下一步 F7:进入到代码 Alt+shift+F7:强制进入代码 ...

  6. QEMU搭建arm64 Linux调试环境

    https://zhuanlan.zhihu.com/p/345232459 简述 本文记录了在ubuntu20.04上,使用QEMU搭建arm64 的Linux开发调试环境.可以方便得使用gdb调试 ...

  7. eclipse进行调试_使用Eclipse平台进行调试

    eclipse进行调试 编者注 :以下文章最初由Pawel Leszek于2003年5月撰写,并于2007年4月由Chris Aniszczyk更新. Eclipse调试器和Debug视图 Eclip ...

  8. QEMU+GDB调试方法

    两年前调试usb/ip开源项目时,就曾用虚拟机远程调试过Windows和Linux系统内核,当时在VMware Workstation上创建两个虚拟机进行调试,也没有记录下如何配置调试,只是大体的还记 ...

  9. Qemu gdb 调试 Liteos realview-pbx-a9 工程

    目录 调试环境准备 gdb 调试方法 调试环境准备 实验操作系统:ubuntu 18.04.5.准备如下环境: 下载 huawei liteos, 并按照官方文档.编译 realview-pbx-a9 ...

  10. stm32运行java虚拟机_windows下的基于Eclipse的STM32开发调试环境搭建

    这段时间在玩STM32,但官方库的代码也确实是有点多,记忆力有点不太好了.突然就想起了以前用Eclipse的那个代码提示功能,谷歌了一段时间, (一)安装编译环境 1.下载和安装JAVA虚拟机 因为E ...

最新文章

  1. 七个开源的 SpringBoot 前后端分离项目,Star过千,快去收藏夹吃灰吧!
  2. 纯CSS实现多级菜单,兼容IE6
  3. java自动雨刷系统,安装雨量传感器实现自动大灯/自动雨刷(详细方法)多图!!
  4. Java实现返回的数据为树形结构
  5. pg 递归算法_PostgreSQL递归查询_20191212
  6. 菜鸟成长日记(五)之WMIC简单命令应用
  7. iOS性能优化篇 —— 耗电优化总结
  8. oracle如何写循环日期自增_Oracle动态创建时间分区,以及Oracle12c中快速创建自增列...
  9. 如何拉取公网RTSP/RTMP流在内网多客户端播放
  10. 开源中国 开源世界2018_2018年教室中的开源激增
  11. yii2过滤器(filter)
  12. java hash简易_Java手写简易版HashMap的使用(存储+查找)
  13. UOJ #117. 欧拉回路
  14. 在Vue+springBoot环境中如何实现单点登录(SSO)
  15. sql2016/2017 卸载安装
  16. Mac使用终端连接远程LInux,FTP连接
  17. 富士施乐Fuji Xerox DocuCentre-II 6000 驱动
  18. PHPStudy使用教程及phpstudy安装教程
  19. Python3,这个库,真的是图片类型验证码的克星,真香。
  20. 智能合约安全(一):以太坊机制及安全问题

热门文章

  1. 参考文献标引方式_论文参考文献标注格式
  2. Micrium DEMO9S12NE64 uCOS-II 官方包 调试记录!
  3. 【CTF】明御攻防实验平台 crypto 鸡藕椒盐味 wp--海明校验码
  4. 学习是一件很辛苦的事,全世界都一样!
  5. dataGridView单元格引用
  6. AR图书,看着很美其实有点坑
  7. c语言命令行贪吃蛇,C语言实现贪吃蛇游戏(命令行)
  8. 2020最新抖音上热门技巧你知道了几个?
  9. 互联网dmz区_DMZ区的概念和用途
  10. 预演:使用 TensorFlow 进行深度学习