dlua

类似 gdb 的 lua 调试器
授权协议 MIT
开发语言 C/C++ Lua
所属分类 开发工具、 程序调试工具
软件类型 开源软件
地区 国产
投 递 者 徐智渊
操作系统 Linux
开源组织
适用人群 未知
 软件概览

dlua 是一个类似 gdb 的 lua 调试器。

特性

  • 支持Linux平台
  • C++编写性能高
  • 通过附加到其他进程上,进行调试
  • gdb风格的调试指令,包括设置条件断点、查看变量、设置变量

编译

  • 用脚本编译dlua,生成dluadluaagent.sodlua是控制台,dluaagent.so是调试插件
# ./build.sh
  • 下载编译hookso,生成hooksohookso是注入工具
  • 最后将dluadluaagent.sohookso放在同级目录即可使用

使用

  • 找到目标进程pid,也可以使用项目中的示例代码。假设pid=1234
# lua test.lua
  • 运行dlua,附加到1234进程,出现如下提示,说明连接正常,可以开始调试
# ./dlua 1234
attack to 1234 ok, use ctrl+c to input command, eg: h
  • 输入ctrl+c,输入h回车查看帮助
(dlua) h
h       help commands
q       quit
bt      show cur call stack
b       add breakpoint, eg: b test.lua:123
i       show info, eg: i b
n       step next line
s       step into next line
c       continue run
dis     disable breakpoint, eg: dis 1
en      enable breakpoint, eg: en 1
d       delete breakpoint, eg: d 1
p       print exp value, eg: p _G.xxx
l       list code
f       select stack frame
fin     finish current call
set     set value, eg: set aa=1
r       run code, eg: r print("test")
  • 其他命令同理,输入ctrl+c,输入命令即可
(dlua) bt
0 in string_time_to_unix_time at test.lua:23
1 in ? at test.lua:50
2 in ? at [C]:-1
  • 退出,则输入q
(dlua) q
#

 

  • 首先把so动态库文件 编译出来(通过NDK),然后再 拷贝到android的工程里 libs/armeabi/下,如果libs/armeabi 不存在,那就自己创建,最后用eclipse编译项目,这样将自动把so文件打包到apk里;eclipse在打包的时候会根据文件名的命名规则(lib****.so)去打包so文件,开头和结尾必须分别为“lib”和“.so”,否则是不会打包到apk文件中的。 生

  • quick3.3编译sqlite3的时候,编译so成功,但是 打包apk后闪退。 04-07 14:24:41.114 4844-4844/? E/dalvikvm﹕ dlopen("/data/app-lib/libcocos2dlua.so") failed: dlopen failed: cannot locate symbol "signal" referenced by "libcoco

  •         编译Lua时,出现这样的错误: gcc -O2 -Wall -DLUA_COMPAT_ALL -DLUA_USE_LINUX -c -o lua.o lua.clua.c:67:31: error:       查阅了一下,centOS上需要安装readline-devel ncurses-devel yum install readline-devel ncurses-devel

  • 1 #!/usr/bin/python 2 3 #This script is used to generate luabinding glue codes. 4 #Android ndk version must be ndk-r9b. 5 6 7 importsys8 importos, os.path9 importshutil10 importConfigParser11 importsu

  • 稍微了解cocos的人都知道,其中的4大元素:导演,场景,图层,精灵 导演运行场景或者替换场景(场景创建使用请参阅场景文章)。 if cc.Director:getInstance():getRunningScene() then cc.Director:getInstance():replaceScene(scene) else cc.Director:getInstance(

  • 该文章为学习笔记,是使用cocos ide开发的。 创建一个游戏 在config.json所指向的 “entry”: “src/main.lua” 入口中完成以下前奏: local function main() -- 内存清理 collectgarbage("collect") collectgarbage("setpause", 100) collectgarb

  • 播放背景音乐 利用cc的文件工具加载音频文件,再用cc的简单音频引擎播放。 Local filePath=cc.FileUtils:getInstance():fullPathForFilename("music.mp3") cc.SimpleAudioEngine:getInstance():playMusic(filePath, true) 播放音效 利用cc的文件工具加载音频文件,再用cc

  • 通过texture创建动画 图片>纹理+矩形>精灵框架1+精灵框架2>动画>动作 -- create dog animate local textureDog = cc.Director:getInstance():getTextureCache():addImage("dog.png") local frameWidth = 105 local frameHeight

  • 创建精灵 通过cc的精灵直接创建,要传入图片。 local sprite = cc.Sprite:create("farm.jpg") 通过精灵框架创建,图片 > 纹理 + 矩形 > 精灵框架 >精灵。 Local texture=cc.Director:getInstance():getTextureCache():addImage("dog.png") local rect = cc.rect

  • 创建图层(直接通过cc创建) local layer = cc.Layer:create() 在图层添加精灵(用addChild引入) layer:addChild(sprite)

  • 创建场景(直接通过cc创建) local scene = cc.Scene:create() 场景加图层(用addChild引入) scene:addChild(layer)

  • cocos2d-x\cocos\base\ccConfig.h 设置开关 0是不需要 1是需要 #ifndef CC_USE_TIFF #define CC_USE_TIFF  0 //modify ycc #endif // CC_USE_TIFF /** Support webp or not. If your application don't use webp format picture

 相关资料
  • GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。对于一名Linux下工作的c++程序员,gdb是必不可少的工具; 1.1. 启动gdb 对C/C++程序的调试,需要在编译前就加上-g选项: - g++ -g hello.cpp -o hello 调试可执行文件: - gdb <program> program也就是你的执行文件,一般在当前

  • 开发程序过程中调试代码是开发者经常要做的一件事情,Go语言不像PHP、Python等动态语言,只要修改不需要编译就可以直接输出,而且可以动态的在运行环境下打印数据。当然Go语言也可以通过Println之类的打印数据来调试,但是每次都需要重新编译,这是一件相当麻烦的事情。我们知道在Python中有pdb/ipdb之类的工具调试,Javascript也有类似工具,这些工具都能够动态的显示变量信息,单步

  • *:使用 GDB 调试可以方便观察 rCore 运行过程,但不属于教程要求 GDB 需要支持 riscv64 架构才能够对 rCore 进行 debug。 运行 gdb --configuration 来查看本地的 GDB 支持什么架构,其中 --target 参数指定了它可以 debug 的架构 如果 gdb 不支持,可以按照下面的步骤来安装 riscv64-unknown-elf-gdb 安装

  • 使用 GDB 调试 Nginx udo gdb -q -tui # -q 安静模式启动 GDB -tui 显示代码界面 进入 GDB 运行 attach Nginx 子进程报错如下: issing separate debuginfos, use: debuginfo-install libgcc-4.8.5-4.el7.x86_64 zlib-1.2.7-17.el7.x86_64 直接安装即可

  • 主要内容:实例,实例,调试类型Lua 提供了 debug 库用于提供创建我们自定义调试器的功能。Lua 本身并未有内置的调试器,但很多开发者共享了他们的 Lua 调试器代码。 Lua 中 debug 库包含以下函数: 序号 方法 & 用途 1. debug(): 进入一个用户交互模式,运行用户输入的每个字符串。 使用简单的命令以及其它调试设置,用户可以检阅全局变量和局部变量, 改变变量的值,计算一些表达式,等等。 输入一行仅包

  • Lua 提供了 debug 库用于提供创建我们自定义调试器的功能。Lua 本身并未有内置的调试器,但很多开发者共享了他们的 Lua 调试器代码。 Lua 中 debug 库包含以下函数: 序号 方法 & 用途 1. debug(): 进入一个用户交互模式,运行用户输入的每个字符串。 使用简单的命令以及其它调试设置,用户可以检阅全局变量和局部变量, 改变变量的值,计算一些表达式,等等。 输入一行仅包