Live++ - C/C++ live coding

Live++ enables live coding for C/C++ applications, combining the power of rapid iteration with the speed of a compiled language.

Live++ compiles your changes in the background, directly patching the machine code of the running executable.
It links against existing code & data symbols, automatically persisting the state of global symbols, function static variables, and the like.
It works with any kind of C/C++ code and requires neither plugins nor a debugger or IDE.

Start your application from anywhere, edit its source code using your favourite editor, and let Live++ do the rest.

Features

  • Project setup agnostic

    Live++ doesn't care about how your project is set up. It works with .EXE, .DLL, and .LIB based projects.

  • IDE agnostic

    Live coding does not require any IDE plugins or similar. Use any text editor for changing your application's source code.

  • Native toolchain

    Live++ uses the native toolchain which the executable was built with for compilation, and does not parse any source code.

  • Binary

    Live++ works at the binary level using .PDB, .EXE, .DLL, .LIB, and .OBJ directly. It extracts and reverses most of the needed information from executable and object files.

  • High compatibility

    Live++ is compatible with almost all compiler options, except whole program optimization and static run-time libraries.

  • 32-bit and 64-bit

    Live++ fully supports x86/32-bit and x64/64-bit applications.

  • Lightweight

    The Live++ .DLL is very lightweight, adding only ~100 KiB to your application's memory footprint. Almost all information is kept in a separate process.

  • Extensive C++ Support

    Live coding supports all C++ features such as RTTI, polymorphism, exceptions, etc. It allows introducing new code & data symbols at the global, thread-local and function-static level, automatically persisting the state of existing symbols.

  • compiler_logos
    Supports Visual Studio 2008-2017 (all editions, including VS Community)

See it in action

Additional C/C++ API

Live++ comes with an additional API that allows you to do even more advanced live coding, which would otherwise be impossible.


  • Structural changes

    Live++ offers pre- and post-patch hooks that allow you to even make changes to the memory layout of classes. Code like the example below allows you to add & remove members to & from classes.

    • livepp
      Pre- and post-patch hook API
  • Synchronization points

    Even though patching a running executable using Live++ is always safe, the API enables you to emit synchronization points into your executable, ensuring that code patches are always applied at e.g. the start of a single frame.

    • livepp
      Synchronization point API
  • Program debug database

    Live++ needs a full PDB file in order to extract some of the needed information about the executable.

  • Single .DLL

    Live coding requires the Live++ DLL to be loaded by your application.

  • Visual Studio compiler

    Code needs to be compiled and linked using a Visual Studio compiler (*).

(*) Subject to change, requirement might be removed in future versions

Frequently asked questions

Supported IDEs & debuggers

No, you can start the executable from anywhere you want. As long as the technical requirements are met and the application has been compiled & linked with the correct settings, you are good to go.
Yes, Live++ yields PDB files for code patches and as such supports popular debuggers like Visual Studio and WinDbg out of the box.

Supported compilers & settings

No, not at the moment.
However, Live++ works in a very generic way, with only a handful of cases that need compiler-specific treatment. We plan on supporting other compilers such as Clang in the future.
Yes, Live++ is able to reconstruct the information needed for live coding directly from the binary files involved.

Required code changes

No, apart from loading the Live++ .DLL and setting up the build options there is nothing else you have to do.
The C API comes as a single header, with macros for hooks and installing synchronization points. Each hook or synchronization point requires exactly one line of code.

In case you have any questions not covered by our FAQ, do not hesitate to contact us directly.

Got your attention?

Live++ is scheduled to be released later this year and is currently available as a closed alpha for a few select partners.

Are you interested in testing Live++ in the closed beta? Then let us know using the following form so we can get back to you.