在gamehaxe.com上huge介绍了hxcpp模块的内置调试功能,我有些好奇它是怎么实现的,就开始翻看相应的代码。
首先,从haxe源码看,haxe是用OCaml编译出来的(OCaml不太熟悉),而haxe的作用是先把hx源码转为对应的as3/cpp/java代码,再编译成目标程序。从haxe源码中的gencpp.ml里能看到许多HXCPP_DEBUGGER和HX_STACK_XXXX的宏,说明haxe在hx->cpp过程中,插入了大量的宏来处理当前的文件名、行号、变量等信息。
再来看hxcpp的代码,在include/hx/Debug.h中能看到HX_STACK_XXXX的定义,例如
#ifdef HXCPP_DEBUGGER #define HX_STACK_LINE(l) { __autostack.mLocation->mLine=l; if (hx::gBreakpoint) hx::CheckBreakpoint(); } #else #define HX_STACK_LINE(l) { __autostack.mLocation->mLine=l; } #endif
这样目标程序执行时,每行haxe代码所对应的cpp代码之前,都是执行这个CheckBreakpoint()函数,从而决定是否断点。
hxcpp实现了断点,但单步还没实现,huge说时间忙,不知道哪个版本会有结果,期待吧。
相关推荐
3D引擎核心_Haxe_Python_下载.zip
hxcpp-guide, Haxe CPP目标构建系统,CFFI和api的指南 hxcpp指南Haxe cpp目标构建系统,CFFI和api的指南命令行目Haxe cpp目标有许多组成整个目标的部分。 在开发过程中,haxelib run hxcpp 工具。xml和 api 。平台和...
ArmorLab是一款基于 AI 的纹理创作软件 - 请查看手册。
资源分类:Python库 所属语言:Python 资源全名:connect_sdk_haxe_port-20.1.3-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 资源全名:connect_sdk_haxe_port-20.1.4-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
要安装到 haxelib,请运行haxelib git titanium_mobile_externs https://github.com/momer/haxe_titanium_mobile.git <version> haxelib 截至本次更新,最新为 3.5.0-rc1。 使用 externs 很简单,下面是test/Test...
支持的钛合金版本用法要安装到 haxelib,请运行haxelib git titanium_mobile_externs https://github.com/momer/haxe_titanium_mobile.git <version> haxelib 截至本次更新,最新为 1.5.1-rc1。 使用 externs 很简单...
Professional haXe and Neko
Haxe是一门新兴的开源编程语言,开发者称:“相比其他语言(Java的平台是 JVM,C#的平台是.Net,ActionScript的平台是Flash Player等等),Haxe才是真正的多平台语言。不管是开发原生iOS、Android应用,还是网页;...
haXe2语言参考手册haXe API Documentation
用于在 websocket 客户端和服务器 (Node.js) 之间传递 JSON 和 Haxe 序列化对象的 Websocket 包装器 有关工作示例,请参阅演示。 安装/编译 要构建演示: 。 。 配置并运行 wafl(在库根目录中): wafl 配置 -...
tardisgo-从Golang到Haxe到CPP / CSharp / Java / JavaScript Transpiler TARDIS Go-> Haxe transpiler Haxe-> C ++ / C#/ Java / JavaScript项目状态:一种不起作用的好奇心,目前在冰上进行开发Go 1.5的问世,...
intellij-haxe, IntelliJ平台的Haxe插件( IDEA,Android Studio ) 用于 IntelliJ IDEA的 Haxe插件这个插件允许你使用 IntelliJ IDEA 开发 Haxe程序。 它需要 IntelliJ IDEA 最终版或者社区版,版本 14,15,2016和...
bms.lang haxe.lang ms.lang qml.lang vhd.lang bnf.lang hcl.lang mssql.lang qu.lang xml.lang boo.lang html.lang mxml.lang r.lang xpp.lang c.lang httpd.lang n3.lang rebol.lang ...
rails_project/ app/ assets/ javascripts/ haxe_project 2在haxe项目目录下创建hxml文件。 rails_project/ app/ assets/ javascripts/ haxe_project+ compile.hxml haxe-rails使用hxml文件进行编译。 3在资产/*.js...
haXe语言参考手册,全面的介绍了haXe语言的各个方面,章节列表如下: 基本类型 语法 类型推断 面向对象 类型参数(泛型) 枚举Enum 包和导入(import) 动态类型Dynamic 高级类型 迭代子Iterator 属性Properties 可...
该项目的目标是提供完全用 haxe 编写的 haxe 语言服务,这些服务无需服务器甚至 haxe 编译器即可在任何地方工作,提供完成、重构、引用服务并提供统一代码来调试多种语言的 haxe 编译代码,例如闪存、 cpp 或 ...