如何使用gdb调试java虚拟机_Eclispe+qemu+gdb调试linux Kernel
单步调试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相关推荐
- gdb 调试kvm虚拟机_GDB+QEMU调试内核模块(实践篇)
调试内核模块的方法有很多.最常用的,可能也是上手难度最低的就是使用prinfk打印出相关的调试信息,但是总给人的感觉不够geeek,所以这里描述一种能够使用gdb+qemu来调试内核的方法. 启动虚拟 ...
- gdb 调试java进程_使用GDB调试JNI代码
本文链接:http://blog.csdn.net/kongxx/article/details/7329515 最近在碰到一段JNI代码不停的出现core dump,用gdb看了一下core文件,信 ...
- java的单步调试_Eclipse调试Java程序 可用于单步调试
在Eclipse中交互式运行代码是其最强大的特性之一,使用JDT调试器,你可以逐行执行你的Java程序,检查程序不同位置变量的值,这个过程在定位代码中的问题时非常有用. 为了准备调试,你需要在代码中设 ...
- Leetcode怎么调试java代码,在Clion上调试LeetCode代码
在Clion上调试LeetCode代码 在leetcode上做题调试起来总有些不方便,所以查阅了一些资料后,按以下配置,自我感觉效率还行,分享给大家.祝大家刷题愉快.并附上自己整理的leetcode4 ...
- idea 调试java技巧_Intellij IDEA Debug 调试技巧
Java技术栈 www.javastack.cn 优秀的Java技术公众号 F9:恢复程序 Alt+F10:显示执行断点 F8: 跳到下一步 F7:进入到代码 Alt+shift+F7:强制进入代码 ...
- QEMU搭建arm64 Linux调试环境
https://zhuanlan.zhihu.com/p/345232459 简述 本文记录了在ubuntu20.04上,使用QEMU搭建arm64 的Linux开发调试环境.可以方便得使用gdb调试 ...
- eclipse进行调试_使用Eclipse平台进行调试
eclipse进行调试 编者注 :以下文章最初由Pawel Leszek于2003年5月撰写,并于2007年4月由Chris Aniszczyk更新. Eclipse调试器和Debug视图 Eclip ...
- QEMU+GDB调试方法
两年前调试usb/ip开源项目时,就曾用虚拟机远程调试过Windows和Linux系统内核,当时在VMware Workstation上创建两个虚拟机进行调试,也没有记录下如何配置调试,只是大体的还记 ...
- Qemu gdb 调试 Liteos realview-pbx-a9 工程
目录 调试环境准备 gdb 调试方法 调试环境准备 实验操作系统:ubuntu 18.04.5.准备如下环境: 下载 huawei liteos, 并按照官方文档.编译 realview-pbx-a9 ...
- stm32运行java虚拟机_windows下的基于Eclipse的STM32开发调试环境搭建
这段时间在玩STM32,但官方库的代码也确实是有点多,记忆力有点不太好了.突然就想起了以前用Eclipse的那个代码提示功能,谷歌了一段时间, (一)安装编译环境 1.下载和安装JAVA虚拟机 因为E ...
最新文章
- 七个开源的 SpringBoot 前后端分离项目,Star过千,快去收藏夹吃灰吧!
- 纯CSS实现多级菜单,兼容IE6
- java自动雨刷系统,安装雨量传感器实现自动大灯/自动雨刷(详细方法)多图!!
- Java实现返回的数据为树形结构
- pg 递归算法_PostgreSQL递归查询_20191212
- 菜鸟成长日记(五)之WMIC简单命令应用
- iOS性能优化篇 —— 耗电优化总结
- oracle如何写循环日期自增_Oracle动态创建时间分区,以及Oracle12c中快速创建自增列...
- 如何拉取公网RTSP/RTMP流在内网多客户端播放
- 开源中国 开源世界2018_2018年教室中的开源激增
- yii2过滤器(filter)
- java hash简易_Java手写简易版HashMap的使用(存储+查找)
- UOJ #117. 欧拉回路
- 在Vue+springBoot环境中如何实现单点登录(SSO)
- sql2016/2017 卸载安装
- Mac使用终端连接远程LInux,FTP连接
- 富士施乐Fuji Xerox DocuCentre-II 6000 驱动
- PHPStudy使用教程及phpstudy安装教程
- Python3,这个库,真的是图片类型验证码的克星,真香。
- 智能合约安全(一):以太坊机制及安全问题