在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的融合》 3D引擎是计算机图形学中的重要组成部分,它...对于“3D引擎核心_Haxe_Python_下载.zip”这个项目,我们期待能从中学习到更多关于如何整合这两种语言以构建高效3D引擎的实践知识。
hxcpp-guide, Haxe CPP目标构建系统,CFFI和api的指南 hxcpp指南Haxe cpp目标构建系统,CFFI和api的指南命令行目Haxe cpp目标有许多组成整个目标的部分。 在开发过程中,haxelib run hxcpp 工具。xml和 api 。平台和...
在本文中,我们将深入探讨 ArmorLab 的主要功能、工作原理以及与Haxe编程语言的关系。 首先,我们要了解Haxe是一种多平台的静态类型编程语言,它允许开发者编写一次代码,然后跨多个平台进行编译,包括Web、桌面、...
资源分类: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 很简单...
在《Wrox_Professional_haXe_and_Neko_2008.pdf》这本书中,你可以找到关于haXe更深入的介绍,包括: - **基础语法**:涵盖变量声明、常量、操作符、流程控制语句(如if、switch、for、while)等。 - **类与对象**...
- 调试与测试 haXe/Neko 应用程序。 **1.3 Learning the Basics** - **基础学习:** - haXe 提供了丰富的数据类型,如整型、浮点型、字符串等。 - 控制结构如条件语句(if-else)、循环(while, for)等。 - ...
Haxe提供了一些库,如`haxe_lua`或`haxe_luajit`,可以方便地与Lua进行交互。 ```haxe import haxe_lua.Lua; import haxe_lua.Lib; class Main { static function main() { var lua = new Lua(); lua.doString...
Haxe是一门新兴的开源编程语言,开发者称:“相比其他语言(Java的平台是 JVM,C#的平台是.Net,ActionScript的平台是Flash Player等等),Haxe才是真正的多平台语言。不管是开发原生iOS、Android应用,还是网页;...
Atom-hxatom是针对Atom文本编辑器的一个扩展,它提供了Haxe语言的类型定义,使得在使用Atom编辑Haxe代码时能获得更好的代码补全、语法高亮和错误检查等功能。Atom是一个广受欢迎的开源文本编辑器,由GitHub开发,其...
haXe2语言参考手册haXe API Documentation
用于在 websocket 客户端和服务器 (Node.js) 之间传递 JSON 和 Haxe 序列化对象的 Websocket 包装器 有关工作示例,请参阅演示。 安装/编译 要构建演示: 。 。 配置并运行 wafl(在库根目录中): wafl 配置 -...
5. **在Haxe中调用JNI**:在Haxe代码中,通过`cpp.Lib.load()`方法加载已经编译好的本地库,并通过`cpp.Pointer.fromFunction()`创建函数指针,从而可以在Haxe代码中调用Java层的native方法。 6. **错误处理和内存...
vscode-hxcpp-调试状态:目前无效。 查看以下替代方法: Vshaxe的插件(可直接从 )。 或者,Proletariat Games的(具有最近的提交)。 以前的状态: Beta,有些稳定,可以随时提出问题或检查解决的问题。 最新更新...
tardisgo-从Golang到Haxe到CPP / CSharp / Java / JavaScript Transpiler TARDIS Go-> Haxe transpiler Haxe-> C ++ / C#/ Java / JavaScript项目状态:一种不起作用的好奇心,目前在冰上进行开发Go 1.5的问世,...