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. Support for LLVM Clang is already in progress and almost finished.
Yes, since revision 357308, Live++ also supports LLVM's LLD.
Yes, Live++ is able to reconstruct the information needed for hot-reload directly from the binary files involved.
Yes!
Live++ has been tested with FASTBuild, SN-DBS, IncrediBuild, various proprietary in-house (distributed) build systems, and build systems used by IDEs other than Visual Studio.

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 API comes as a single header, with macros and functions for installing hooks and synchronization points. Each hook or synchronization point requires exactly one line of code.

Live++ has been tested extensively on several codebases and game engines of varying sizes. If you have followed all the required steps outlined in the online documentation and checked the FAQ for common mistakes and problems, but still cannot get Live++ to work with your setup, please do not hesitate to contact us directly.

We want to make Live++ work for everyone.

Comparison with Edit & Continue

This table was partly built based on Edit & Continue's behaviour documented here.

General support Edit & Continue Live++ Remarks
Other IDEs Live++ is IDE-agnostic and does not need Visual Studio.
Other editors and external tools Live++ does not need a debugger to apply code changes.
Multiple processes Live++ fully supports multi-process editing.
Externally launched applications Live++ works with any application as long as the Live++ DLL is loaded by this application or any of its modules. It does not require applications to be launched from Visual Studio.
Supported code changes Edit & Continue Live++ Remarks
Adding new global or static data Live++ supports this and calls constructors/dynamic initializers accordingly.
Changing global or static data Live++ supports this for all global and static data.
Changing code in static libraries Live++ supports any mix of DLLs and static libraries and is project-setup agnostic.
Unlimited number of changes Live++ is only limited by the address space that is available in your application.
Compiler and linker options Edit & Continue Live++ Remarks
Optimized builds Live++ supports optimizations, inlining, etc. and even works for data symbols not emitted into the PDB.
Multiple PDB formats Live++ does not need "Program Database for Edit And Continue (/ZI)" to be set, and therefore supports distributed build systems that need to use /Z7 (debug information embedded into the object files).
Linking against the static runtime library (/MT and /MTd) Live++ supports linking against the static and the dynamic run-time libraries.
Control-flow guard (/guard:cf), /ORDER, function-level linking (/Gy) Live++ fully supports any combination of these compiler and linker options, while Edit & Continue needs function-level linking to be set and does not support the other options.
Needs incremental linking (/INCREMENTAL) Live++ does not need incremental linking but uses hot-patching instead. Live++ can also make use of incremental linking thunks should they be available.
Needs hot-patching (/hotpatch) and /FUNCTIONPADMIN Live++ needs these compiler and linker options to be set in order to work 100% reliable.