`
thinkry
  • 浏览: 39680 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

haxe的cpp_target是如何加入内置调试功能的

阅读更多

在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

    《3D引擎核心:Haxe与Python的融合》 3D引擎是计算机图形学中的重要组成部分,它...对于“3D引擎核心_Haxe_Python_下载.zip”这个项目,我们期待能从中学习到更多关于如何整合这两种语言以构建高效3D引擎的实践知识。

    hxcpp-guide, Haxe CPP目标构建系统,CFFI和api的指南.zip

    hxcpp-guide, Haxe CPP目标构建系统,CFFI和api的指南 hxcpp指南Haxe cpp目标构建系统,CFFI和api的指南命令行目Haxe cpp目标有许多组成整个目标的部分。 在开发过程中,haxelib run hxcpp 工具。xml和 api 。平台和...

    人工智能驱动的纹理创作软件_Haxe_代码_下载

    在本文中,我们将深入探讨 ArmorLab 的主要功能、工作原理以及与Haxe编程语言的关系。 首先,我们要了解Haxe是一种多平台的静态类型编程语言,它允许开发者编写一次代码,然后跨多个平台进行编译,包括Web、桌面、...

    Python库 | connect_sdk_haxe_port-20.1.3-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:connect_sdk_haxe_port-20.1.3-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Python库 | connect_sdk_haxe_port-20.1.4-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:connect_sdk_haxe_port-20.1.4-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    haxe_titanium_mobile:Appcelerator Titanium Mobile 的 Haxe Extern 类

    要安装到 haxelib,请运行haxelib git titanium_mobile_externs https://github.com/momer/haxe_titanium_mobile.git <version> haxelib 截至本次更新,最新为 3.5.0-rc1。 使用 externs 很简单,下面是test/Test...

    haxe_titanium_alloy:Appcelerator 钛合金的 Haxe Extern 类

    支持的钛合金版本用法要安装到 haxelib,请运行haxelib git titanium_mobile_externs https://github.com/momer/haxe_titanium_mobile.git <version> haxelib 截至本次更新,最新为 1.5.1-rc1。 使用 externs 很简单...

    haXe学习笔记(一)

    在《Wrox_Professional_haXe_and_Neko_2008.pdf》这本书中,你可以找到关于haXe更深入的介绍,包括: - **基础语法**:涵盖变量声明、常量、操作符、流程控制语句(如if、switch、for、while)等。 - **类与对象**...

    Professional haXe and Neko

    - 调试与测试 haXe/Neko 应用程序。 **1.3 Learning the Basics** - **基础学习:** - haXe 提供了丰富的数据类型,如整型、浮点型、字符串等。 - 控制结构如条件语句(if-else)、循环(while, for)等。 - ...

    haxe语言编译成luajit 再exe进行调用

    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...

    DXGI、D3D11 和 D3DCompiler 的 Haxe,hxcpp 绑定.zip

    该库仅适用于Haxe cpp目标。安装haxelib git linc_directx https://github.com/Aidan63/linc_directx用法这个库还很新,没有涵盖太多的 directx API。它包含的内容足以绘制基本的纹理四边形并编译顶点和像素着色器,...

    Haxe 3.0垮平台开源编程语言

    Haxe是一门新兴的开源编程语言,开发者称:“相比其他语言(Java的平台是 JVM,C#的平台是.Net,ActionScript的平台是Flash Player等等),Haxe才是真正的多平台语言。不管是开发原生iOS、Android应用,还是网页;...

    Atom-hxatom,atom文本编辑器包的haxe类型定义.zip

    Atom-hxatom是针对Atom文本编辑器的一个扩展,它提供了Haxe语言的类型定义,使得在使用Atom编辑Haxe代码时能获得更好的代码补全、语法高亮和错误检查等功能。Atom是一个广受欢迎的开源文本编辑器,由GitHub开发,其...

    haXe2语言参考手册

    haXe2语言参考手册haXe API Documentation

    haxe_remoting:用于 haxe 的其他异步远程处理工具

    用于在 websocket 客户端和服务器 (Node.js) 之间传递 JSON 和 Haxe 序列化对象的 Websocket 包装器 有关工作示例,请参阅演示。 安装/编译 要构建演示: 。 。 配置并运行 wafl(在库根目录中): wafl 配置 -...

    haxe nme通过jni调用android

    5. **在Haxe中调用JNI**:在Haxe代码中,通过`cpp.Lib.load()`方法加载已经编译好的本地库,并通过`cpp.Pointer.fromFunction()`创建函数指针,从而可以在Haxe代码中调用Java层的native方法。 6. **错误处理和内存...

    vscode-hxcpp-debug:用于Haxe hxcpp运行时的VSC调试适配器

    vscode-hxcpp-调试状态:目前无效。 查看以下替代方法: Vshaxe的插件(可直接从 )。 或者,Proletariat Games的(具有最近的提交)。 以前的状态: Beta,有些稳定,可以随时提出问题或检查解决的问题。 最新更新...

    Golang-> Haxe-> CPP / CSharp / Java / JavaScript转译器-Golang开发

    tardisgo-从Golang到Haxe到CPP / CSharp / Java / JavaScript Transpiler TARDIS Go-> Haxe transpiler Haxe-> C ++ / C#/ Java / JavaScript项目状态:一种不起作用的好奇心,目前在冰上进行开发Go 1.5的问世,...

Global site tag (gtag.js) - Google Analytics