DDT3 is a remote debugger for the Lua language, made of two components:
  1. stand-alone client application with user interface - running on development PC
  2. minimal, headless remote component - embedded in debuggee on target device, hooked into Lua runtime
communication happens over TCP/IP.

In motion


thumb-1 Platforms


UI navigation

Script editor
main UI


headless waiting
console debugging


Q: What does your ISO C++ embrace mean practically?

A: The code is overwhelmingly platform- and toolkit-agnostic. It uses std::string, std::uint32_t, std::unordered_map and set, STL iterators, algorithms, etc. When interfacing with non-ISO code DDT dips its toe in and out as briefly as possible.

F.ex. DDT has its own logging facility using a light sig/slot pattern and a type-safe C++14 vararg template to mimic sprintf().

Q: We use QT/.Net/JUCE/other, not wxWidgets, is this a show-stopper?

A: No. DDT's UI widgets are portable by rendering to cairo 2D surfaces. Those can be Qt, OpenGL or any other available cairo backend.

The variable view pane (for locals, globals and watches) already uses this new model. Table hierarchies, mouse picking and hyperlinks are handled by DDT's own code. The editor is a straight Scintilla wrapper; lexing, highlighting, etc. are handled internally. The daemon is headless, so no UI issue there.

These new widgets are meant to fit with C++17's planned cairo integration.

Q: What's special about the networking layer?

A: Many know about Boost.Asio, few know its recent non-Boost flavor, which uses C++11 instead. It's just as fast, portable and still header-only but without Boost's baggage.

Asio was accepted in its entirety to form part of the next networking TS. See this C++ ISO report as well as think-async.com for technical details.

DDT uses binary TCP streams whose data is both platform- and arch- agnostic. F.ex. a Windows client connects directly to an iOS daemon - without OSX bridge.

Q: What does "DDT" stand for?

A: It's a punacronym for dedetizador which means "pest control" in Brazilian Portuguese (where Lua's from). Formally, "debugger" translates to "depurador".

Source code

The latest trunk/development C++ source code is available on github under the Apache 2 license but building it is no longer realistic without much effort due to its dependencies' non-updated evolutions.


email me for any questions, requests for references or otherwise.

i.e. [my first name] at [this domain]

- DDT3 is a proprietary evolution of DDT v0.92b which Inhance Digital Corporation open-sourced under MIT license on Feb 18, 2008 (all versions written by moi )
- some icons use placeholder art that may be under various licenses