No, you can start the executable from anywhere you want. As long as the technical requirements are met and the application has been compiled and linked with the correct settings, you are good to go.
No, Live++ is completely IDE-independent.
Yes, Live++ produces debug information files for code patches and as such supports popular debuggers like Visual Studio, Rider and WinDbg out of the box.
Yes, Live++ supports both the MSVC toolchain and Clang since version 14.
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.
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 provide 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.
This table was partly built based on Visual Studio's Edit & Continue behaviour documented here.
General support | Edit & Continue | Live++ | Remarks |
---|---|---|---|
Other IDEs | No | Yes | Live++ is IDE-agnostic and does not require Visual Studio. |
Other editors and external tools | No | Yes | Live++ does not require a debugger to apply code changes. |
Multiple processes | No | Yes | Live++ supports both local and remote processes. |
Externally launched applications | No | Yes | Live++ works with any target application as long as the Live++ Agent 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 | No | Yes | Live++ supports this and calls constructors/dynamic initializers accordingly. |
Changing global or static data | No | Yes | Live++ supports this for all global and static data. |
Changing code in static libraries | No | Yes | Live++ supports any mix of shared and static libraries and is project-setup agnostic. |
Unlimited number of changes | No | Yes | Live++ is only limited by the address space that is available in your application. |
Supported code changes | Edit & Continue | Live++ | Remarks |
---|---|---|---|
Optimized builds | No | Yes | Live++ supports optimizations, inlining, etc. and even works for data symbols not emitted into the debug information file. |
Multiple PDB formats | No | Yes | 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) |
No | Yes | Live++ supports linking against the static and the dynamic run-time libraries. |
Control-flow guard (/guard:cf), /ORDER, function-level linking (/Gy) |
No | Yes | 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) |
Yes | No | 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 |
No | Yes | Live++ needs these compiler and linker options to be set in order to operate 100% reliably. |
Fully featured, no registration required, no strings attached.