编译

下载brew然后安装hg,freetype,ccache

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew install ccache
$ brew install freetype
$ brew install hg
$ hg clone http://hg.openjdk.java.net/jdk/jdk12 openjdk12
$ cd openjdk12
$ chmod +x configure
$ ./configure --enable-ccache --witt-debug-level=server-fastdebug
$ make all #or make hotspot

一切完成后openjdk12/build/macos-x86_64-server-fastdebug就是编译产出。

xcode调试

打开xcode创建一个项目,然后选择macOS,创建一个命令行项目:

然后选中新项目自动创建的文件右键删除

接着配置启动项。对着停止那个方块按钮旁边的按钮右键Edit Scheme

在运行里面选择basic configuration,选择other

这里选择之前编译出来的jvm,比如我的目录是/Users/kelthuyang/Desktop/openjdk12/build/macosx-x86_64-server-fastdebug/jdk/bin

然后选择Argument给虚拟机加个启动参数,这里随便写个java hello world,然后javac编译得到字节码文件,-cp 指定字节码所在目录,后面加上类名

然后选中工程add files to project将hotspot源代码倒入到项目

到这里已经可以运行了,直接运行会出现sigsegv信号,这是正常情况,但是会阻碍调试。可以在lldb中使用process handle SIGSEGV -s false

不过每次运行都需要输入比较麻烦,可以设置符号断点忽略sigsegv信号。选择左边创建那个箭头,然后最下面加号选择symbolic breakpoint

随便加一个,比如我加的是Threads::create_vm模块忽略sigsegv

再次运行,一切顺利!

最新文章

  1. .net发邮件【转】
  2. 前端神器 Firebug 2.0 新特性一览
  3. FreePascal经典资料
  4. 用React.addons.TestUtils、Jasmine进行单元测试
  5. 李洪强漫谈iOS开发[C语言-031]-逻辑短路
  6. 转:前端冷知识(~~some fun , some useful)
  7. Android应用开发-小巫CSDN博客clientJsoup篇
  8. android 原生应用、Web应用、混合应用优缺点分析
  9. 前端基础-CSS的各种选择器的特点以及CSS的三大特性
  10. Jenkins+PowerShell持续集成环境搭建(六)参数化构建
  11. eclipse没有server选项
  12. oracle坏块问题的处理
  13. A* 寻路学习
  14. mysql cmd 启动服务
  15. 通过sqli-labs学习sql注入——基础挑战之less1-3
  16. 自定义的开关按钮——SwitchButton
  17. 创建新的Cocos2dx 3.0项目并解决一些编译问题
  18. 如何利用mixin编写media query的代码
  19. 实现atoi函数
  20. ant-design-pro使用服务器数据接口代理配置

热门文章

  1. JSON ------ 创建与访问
  2. Java开发笔记(一百四十五)FXML布局的伸展适配
  3. docker 的Portainer和Dive
  4. TCMalloc - 细节
  5. trie、FSA、FST(转)
  6. 【题解】最大 M 子段和 Max Sum Plus Plus [Hdu1024] [51nod1052]
  7. Java的jdk环境变量配置
  8. CXF 教程(一)
  9. 字符串格式连接sqlserver数据库的字段概念解释
  10. SpringMVC+EasyUI实现页面左侧导航菜单