Frequently asked questions
Supported IDEs & debuggers
Supported compilers & settings
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.
Required code changes
Apart from loading the Live++ .DLL and setting up the build options there is nothing else you have to do.
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.|