Live++ for Windows - FAQ
English 日本語 한국어 简体中文

# Frequently Asked Questions

If you have a question and cannot find it here, send us an email.

I keep getting the error "src\main.cpp: fatal error C1041: cannot open program database 'C:\Development\Project.pdb'; if multiple CL.EXE write to the same .PDB file, please use /FS".

This happens when both the compiler-generated .PDB file (C/C++ -> Output Files -> Program Database File Name) as well as the linker-generated .PDB file (Linker -> Debugging -> Generate Program Database File) are set to the same output file. In this case, the debugger will lock the .PDB file during debugging, while the compiler tries to write to the same file upon compilation.

Please note that the .PDB file generated by the compiler is an intermediate file and not a build artefact. As such, it is best to leave the corresponding compiler option untouched. Furthermore, there have been reports of large projects suffering up to 4x longer link times (for incremental and full builds without using Live++) in cases where both compiler and linker wrote to the same .PDB file, so it is recommended to use separate files for compiler and linker PDBs.

The compiler keeps on reporting "src\main.cpp: fatal error C1041: cannot open program database 'C:\Development\vc141.idb'; if multiple CL.EXE write to the same .PDB file, please use /FS".

This happens when native Edit and Continue is enabled and the 'C/C++ -> General -> Debug Information Format -> Program Database for Edit and Continue (/ZI)' compiler option is used. Note that the Debug Information Format must be set to 'C7 compatible (/Z7)' or 'Program Database (/Zi)'.

The compiler throws several cl : Command line warning D9007 : '/external:I' requires '/external:W'; option ignored warnings, followed by missing includes.
How do I fix this?

You are most likely running into an issue with the Visual Studio toolchain.

I use the INCLUDE environment variable for specifying include paths, but those seem to be ignored by Live++.
What is going on?

You are most likely running into an issue with the Visual Studio toolchain.

Live++ reports "Instruction at 0xF00 in function 'Bar' is too short to be patched. Changes to this function will not be observable.".
What should I do?

This is most likely caused by translation units that were not built with the correct compiler settings.

Live++ reports "Failed to determine vcvars*.bat environment for toolchain 'Foo'".
What do I need to change?

When using the Visual Studio compiler or linker, a vcvars*.bat file needs to be invoked in order to set up the toolchain environment for subsequent compiling. Live++ automatically detects the toolchain that was used to build Live++-enabled applications and locates the corresponding vcvars*.bat file, as long as the relative paths of the default installation directory are kept intact.

When using a custom toolchain or build system, the compiler (cl.exe) and linker (link.exe) are often kept in a non-default relative path structure, which makes finding the correct vcvars*.bat file harder. In this case, Live++ expects any of the following files in the same directory as the compiler or linker invoked:

- vcvars64.bat
- vcvarsamd64_x86.bat
- vcvarsx86_amd64.bat
- vcvars32.bat

Note that you can supply your own files for setting up the compiler environment and need not copy Visual Studio's files, as long as the file in question is correctly named.

Live++ is unable to launch the compiler when trying to re-compile a file.

Does your setup use distributed/remote builds? If so, please make sure to set the required preferences.

The linker environment cannot be found by Live++.
Which setting do I need to configure?

Make sure to generate full PDBs (e.g. using /DEBUG:FULL) and not partial PDBs (e.g. using /DEBUG:FASTLINK).

Live++ does nothing when pressing the shortcut.
What am I missing?

First, make sure that the Live++ agent has been created and Live++ is enabled for the module (.EXE or .DLL) in question by calling one of the appropriate API functions.

Second, remember to save your changes before pressing the shortcut. If Live++ still does nothing, it was unable to detect which translation units are part of your module. In this case, please check if your compiler and linker settings are correct.

Third, ensure that Live++ can find all .PDB, .OBJ, .CPP and .H files it needs in order to work.

If the issue still persists and you cannot figure out why Live++ is not working with your setup, please let us know.

I tried everything, but I cannot seem to get Live++ to work with my setup.
How do I report this?

Please contact us with a description of the problem you're experiencing, along with the Broker, Bridge and Agent logs attached.

The Broker log file can be reached by selecting Tools -> Show Broker log file... in the Broker main menu.

The Bridge and Agent log files can be reached by selecting Show log files for selected local processes... in the context menu of the Processes view.