A system for debugging applications at resource-constrained virtual
machines may include a target device configured to host a lightweight
debug agent to obtain debug information from one or more threads of
execution at a virtual machine executing at the target device, and a
debug controller. The lightweight debug agent may include a plurality of
independently deployable modules. The debug controller may be configured
to select one or more of the modules for deployment at the virtual
machine for a debug session initiated to debug a targeted thread, to
deploy the selected modules at the virtual machine for the debug session,
and to receive debug information related to the targeted thread from the
lightweight debug agent during the session.