千家信息网

xmake中如何运行和调试目标程序

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,xmake中如何运行和调试目标程序,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。xmake是一个基于Lua的轻量级现代化
千家信息网最后更新 2026年11月03日xmake中如何运行和调试目标程序

xmake中如何运行和调试目标程序,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。

运行生成目标

xmake也提供了run命令,直接运行生成后的可执行文件,用于方便快速的进行测试,例如:

$ xmake run
hello xmake!
添加运行环境变量

我们也可以在xmake.lua中通过add_runenvs接口来添加设置默认运行target程序的环境变量。

所以,对于PATH这种,通过此接口追加值是非常方便的,而且此接口支持多值设置,所以通常就是用来设置带有path sep的多值env。。

target("test")
set_kind("binary")
add_files("src/*.c")
add_runenvs("PATH", "/tmp/bin", "xxx/bin")
add_runenvs("LD_LIBRARY_PATH", "/tmp/lib", "xxx/lib")

更多关于此接口的描述,可以看下文档:add_runenvs接口文档

自定义运行逻辑

如果单纯的环境设置,以及默认的加载运行规则不满足需求,我们可以通过定制化on_run脚本,实现更加复杂的运行逻辑:

例如,运行安装好的apk程序:

target("test")
-- ...
-- 设置自定义运行脚本,自动运行安装好的app程序,并且自动获取设备输出信息
on_run(function (target)
os.run("adb shell am start -n com.demo/com.demo.DemoTest")
os.run("adb logcat")
end)

调试程序

命令行调试

我们也可以传递-d参数,调用gdb/lldb等调试器程序,加载目标文件进行调试:

$ xmake run -d  

xmake将会使用系统自带的调试器去加载程序运行,目前支持:lldb, gdb, windbg, vsjitdebugger, ollydbg 等各种调试器。

[lldb]$target create "build/hello"
Current executable set to 'build/hello' (x86_64).
[lldb]$b main
Breakpoint 1: where = hello`main, address = 0x0000000100000f50
[lldb]$r
Process 7509 launched: '/private/tmp/hello/build/hello' (x86_64)
Process 7509 stopped
* thread #1: tid = 0x435a2, 0x0000000100000f50 hello`main, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x0000000100000f50 hello`main
hello`main:
-> 0x100000f50 <+0>: pushq %rbp
0x100000f51 <+1>: movq %rsp, %rbp
0x100000f54 <+4>: leaq 0x2b(%rip), %rdi ; "hello world!"
0x100000f5b <+11>: callq 0x100000f64 ; symbol stub for: puts
[lldb]$
使用vscode进行断点调试

我们还可以通过xmake-vscode插件配合vscode来实现对c/c++项目的断点调试支持。

另外我们还需要依赖vscode的C++插件才能进行调试支持,不过由于开发c/c++程序,这个插件几乎是必需,所以并没有太大问题。

就算没有安装此插件,xmake-vscode也会加载lldb/gdb/vsjitdebugger等系统调试器,直接加载调试。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

运行 程序 接口 支持 插件 调试器 目标 环境 项目 变量 可以通过 命令 文件 文档 断点 更多 系统 脚本 逻辑 需求 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 耶加雪菲 上海挚品互联网科技有限公司 科技企业和互联网企业 互联网公司 科技公司 高科技与互联网 合肥互联网科技公司 互联网 卓越科技 为想互联网科技 哈尔滨新华互联网科技 银川新华互联网科技学校地址 哈尔滨新华互联网科技学院 互联网科技教育视频 互联网经济与金融科技 苏州五指互联网络科技有限 翼展科技 首家互联网医院 厦门江牛科技互联网 易企秀互联网科技是做什么的 中国科技和美国互联网 互联网科技对化妆品行业 瑞安市蟠桃会互联网科技有限公司 互联网科技会 科技制造互联网公司 天扬科技互联网广告 互联网金融监管科技 湖南洣水互联网科技有限公司扣款 深圳市运趣互联网科技有限公司 银川新华互联网科技学校联系电话 上海京穆互联网科技有限公司 安徽九吞吴互联网科技有限公司 现代科技的标志之一的互联网
0