Live++ for Windows - 常见问题
English 日本語 한국어 简体中文

# 常见问题

如果您有问题但在这里找不到，请给我们发送电子邮件。

我一直收到错误信息"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" 。

当编译器生成的 .PDB 文件(C/C++ -> Output Files -> Program Database File Name) 和链接器生成的 .PDB 文件(Linker -> Debugging -> Generate Program Database File) 都设置为同一输出文件时，就会发生这种情况。在这种情况下，调试器会在调试期间锁定 .PDB 文件，而编译器则会在编译时尝试写入同一文件。

请注意，编译器生成的 .PDB 文件是一个中间文件，而不是编译工件。因此，最好不要触动相应的编译器选项。此外，有报告称，在编译器和链接器都写入同一个 .PDB 文件的情况下，大型项目的链接时间（不使用 Live++ 的增量和完全构建）最多会延长 4 倍，因此建议编译器和链接器使用不同的 PDB 文件。

编译器不断报告"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" 。

启用本机编辑和继续（Edit and Continue）并使用'C/C++ -> General -> Debug Information Format -> Program Database for Edit and Continue (/ZI)' 编译器选项时会出现这种情况。请注意，调试信息格式必须设置为'C7 compatible (/Z7)' 或 'Program Database (/Zi)' 。

编译器会抛出几个cl : Command line warning D9007 : '/external:I' requires '/external:W'; option ignored 警告，然后是丢失包含。
如何解决这个问题？

您很可能遇到了Visual Studio 工具链的问题。

我使用 INCLUDE 环境变量指定包含路径，但 Live++ 似乎忽略了这些路径。
这是怎么回事？

你很可能遇到了Visual Studio 工具链的问题。

Live++ 报告"函数 'Bar' 中位于 0xF00 的指令过短，无法打补丁。对此函数的更改将无法察觉。"。
我该怎么办？

这很可能是翻译单元未使用正确的编译器设置构建造成的。

Live++ 报告"无法确定工具链 'Foo' 的 vcvars*.bat 环境"。
我需要更改什么？

使用 Visual Studio 编译器或链接器时，需要调用 vcvars*.bat 文件，以便为后续编译设置工具链环境。只要默认安装目录的相对路径保持不变，Live++ 会自动检测用于构建支持 Live++ 应用程序的工具链，并找到相应的 vcvars*.bat 文件。

在使用自定义工具链或构建系统时，编译器（cl.exe）和链接器（link.exe）通常保留在非默认的相对路径结构中，这使得查找正确的 vcvars*.bat 文件变得更加困难。在这种情况下，Live++ 希望以下任何文件与调用的编译器或链接器位于同一目录：

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

请注意，您可以提供自己的文件来设置编译器环境，无需复制 Visual Studio 的文件，只要相关文件命名正确即可。

当尝试重新编译文件时，Live++ 无法启动编译器。

您的设置是否使用分布式/远程编译？如果是，请确保设置所需的首选项。

Live++ 无法找到链接器环境。
我需要配置哪个设置？

确保生成完整的 PDB（如使用/DEBUG:FULL），而不是部分 PDB（如使用/DEBUG:FASTLINK ）。

按快捷键时，Live++ 什么也不做。
我缺少了什么？

首先，通过调用相应的 API 函数之一，确保已创建 Live++ Agent，并为相关模块（.EXE 或 .DLL）启用了 Live++。

其次，记得在按下快捷键前保存更改。如果 Live++ 仍然没有任何反应，说明它无法检测到哪些翻译单元是模块的一部分。在这种情况下，请检查编译器和链接器的设置是否正确。

第三，确保 Live++ 能找到其工作所需的所有 .PDB、.OBJ、.CPP 和 .H 文件。

如果问题仍然存在，而且你无法找出 Live++ 无法在你的设置下运行的原因，请告诉我们。

我尝试了所有方法，但似乎无法让 Live++ 与我的设置一起工作。
如何报告此问题？

请联系我们，说明您遇到的问题，并附上 Broker、Bridge 和 Agent 日志。

在 Broker 主菜单中选择 "工具"->"显示 Broker 日志文件..."，即可查看 Broker 日志文件。

要查看 Bridge 和 Agent 日志文件，请在进程视图的上下文菜单中选择显示所选本地进程的日志文件...。