aseprite / aseprite/api

Feature suggestion debugger.lua integration?

Open
#11 0 comments 0 reactions 0 assignees View on GitHub
feature
Dominant language
No language data
Stars
307
Forks
68
PR merge metrics
No merged PRs in 30d

Description

I've been puttering around with making a bunch of scripts to help automate making graphics for my NES games, which has been working out really well. The biggest issue I've run into is that debugging the scripts is really tedious without a debugger, and lua's minimal amount of built in "to string" capabilities makes log based debugging tedious too.

So... a shameless plug for a project I've been working on for a few years:
https://github.com/slembcke/debugger.lua

Why you might want to consider integrating it:
* Can be included as a single .lua file or .c file (that embeds the lua source and provides a C API).
* Minimal bloat. The debugger is < 20kb of pure Lua code, no external dependencies.
* Provides `dbg.call()`/`dbg_call()` to provide a drop in replacements for `pcall()`/`lua_pcall()` that attach the debugger on an error.
* Retargetable I/O (see more below)
* Zero overhead when the REPL is not active.
* Simple but effective debugger with step/next/continue, variables listing, statement/expression evaluation, backtrace, code inspection, and more.
* Could be used like a REPL to experiment with the Asesprite API more easily.

I had tried using it before, but the lack of `require()`, and `io.read()` seemed to make it a non-starter. Since debugger.lua has retargetable I/O by overriding it's `read()` and `write()` functions, it occurred to me today that I could just use UNIX FIFOs to connect the I/O to a terminal. Voila! So apparently the I/O issue is the only thing holding it back.
![debugger](http://files.slembcke.net/upshot/upshot_Tb3rVNJw.png)

I'll probably try integrating it myself, but I dunno how far I'll be able to get...

Contributor guide

No contributing guide indexed for this repository

Research direction

The request centers on integrating debugger.lua with the Aseprite scripting environment; begin by reviewing debugger.lua’s require(), io.read(), and retargetable I/O constraints alongside the repository’s scripting entry points. Define the supported integration path and verify that a script can enter the debugger, inspect state, and continue without overhead when the REPL is inactive.

Written by the indexing model from the issue text.

Assessment

Tech stack
lua
Domain
devtools
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.