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

Yes, Live++ supports both the MSVC toolchain and LLD since version 14.
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!
The only requirements are that you create a Live++ Agent and set up your project's build options correctly.
The API ships as a few headers, which have macros and functions for creating agents, enabling modules, and installing hooks. Each hook 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 Visual Studio Edit & Continue

This table was partly built based on Visual Studio's Edit & Continue 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.
Networked editing Live++ supports both local and remote processes.
Externally launched applications Live++ works with any target application as long as the Live++ Agent 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 the /Z7 format, where extensive debug information is embedded in 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 operate 100% reliably.