WebAssembly Debugging with LLDB @ FOSDEM 26

I’ll be presenting WebAssembly Debugging with LLDB in the LLVM Dev Room at FOSDEM 26 on Saturday, January 31st. Abstract WebAssembly support in Swift started as a community project and became an official part of Swift 6.2. As Swift on WebAssembly matures, developers need robust debugging tools to match. This talk presents our work adding native debugging support for Swift targeting Wasm in LLDB. WebAssembly has some unique characteristics, such as its segmented memory address space, and we’ll explore how we made that work with LLDB’s architecture. Additionally, we’ll cover how extensions to the GDB remote protocol enable debugging across various Wasm runtimes, including the WebAssembly Micro Runtime (WAMR), JavaScriptCore (JSC), and WasmKit. ...

January 5, 2026

WebAssembly Debugging with LLDB & WAMR

This post describes how to debug WebAssembly code running under the WebAssembly Micro Runtime (WAMR) on macOS. WAMR is a lightweight WebAssembly runtime designed for embedded and IoT applications, but its simplicity and debugging support make it well suited for general development. Building the WebAssembly Micro Runtime We have to build the runtime with debugging support. Start by cloning the wasm-micro-runtime repository and optionally check out a specific release. $ git clone [email protected]:bytecodealliance/wasm-micro-runtime.git $ cd wasm-micro-runtime $ git checkout release/2.4.x Next, build iwasm. This is the binary that uses WAMR VMcore and allows us to interact with it from the command line. We need to enable debugging support (WAMR_BUILD_DEBUG_INTERP=1) and specify the target architecture (WAMR_BUILD_TARGET=AARCH64 for Apple Silicon). I’m using Ninja as the generator since that’s what I’m used to when building LLVM and LLDB. ...

August 6, 2025

WebAssembly Debugging

WebAssembly (Wasm) is a low-level binary instruction format. It was originally created to run in the browser, but has gained traction in many non-browser environments as well. Debugging WebAssembly applications presents unique challenges compared to traditional native code debugging. Unlike native executables that run directly on the processor, WebAssembly code executes within a virtual machine that abstracts away the underlying hardware. This abstraction, while providing portability and security benefits, complicates the debugging process because debuggers cannot rely on standard debugging techniques. ...

July 29, 2025