【发布时间】:2014-04-10 13:01:28
【问题描述】:
当两个 Visual Studio 进程并行编译时,第二个进程将重用第一个进程启动的 mspdbsrv 实例。因此,当第一个构建终止并且整个进程树终止(例如由Jenkins)时,另一个构建失败。
该错误报告描述了如何手动启动它,以免它被杀死。但是这件事也因偶尔忘记关闭文件而闻名,这可能会导致 next 构建失败。
有没有mspdbsrv 将不使用的选项组合?
好的,我正在寻找一个通用的答案,所以我一开始没有包含当前选项。但是到目前为止的答案听起来像 mspdbsrv 在不使用某些选项时不应该使用。除了在(由 CMake)用来检查 MSC++ 是否工作的简单测试项目中,它们没有被使用,但它确实启动了mspdbsrv.exe。琐碎的项目是一个.vcproj 文件,通过devenv.com CompilerIdC.vcproj /build Debug 编译。构建为 C 运行以下命令:
cl.exe /Od /D "_UNICODE" /D "UNICODE" /FD /EHsc /RTC1 /MDd /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W0 /c /TC ".\CMakeCCompilerId.c"
link.exe /OUT:".\CompilerIdC.exe" /INCREMENTAL:NO /MANIFEST /MANIFESTFILE:"Debug\CompilerIdC.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /NODEFAULTLIB:"libc" /SUBSYSTEM:CONSOLE /DYNAMICBASE /NXCOMPAT kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ".\Debug\CMakeCCompilerId.obj"
mt.exe /outputresource:".\CompilerIdC.exe;#1" /manifest ".\Debug\CompilerIdC.exe.intermediate.manifest"
以及 C++ 的以下命令:
cl.exe /Od /D "_UNICODE" /D "UNICODE" /FD /EHsc /RTC1 /MDd /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W0 /c /TP ".\CMakeCXXCompilerId.cpp"
link.exe /OUT:".\CompilerIdCXX.exe" /INCREMENTAL:NO /MANIFEST /MANIFESTFILE:"Debug\CompilerIdCXX.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /NODEFAULTLIB:"libc" /SUBSYSTEM:CONSOLE /DYNAMICBASE /NXCOMPAT kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ".\Debug\CMakeCXXCompilerId.obj"
mt.exe /outputresource:".\CompilerIdCXX.exe;#1" /manifest ".\Debug\CompilerIdCXX.exe.intermediate.manifest"
这仍然会启动mspdbsrv.exe。实际上,我暂时使用它来保护它免受 Jenkins 杀手的影响。
/FD 选项由devenv.com 注入。我尝试通过msbuild 运行它,但它调用vcbuild (Visual Studio 2008) 并执行相同的命令,包括/FD 选项。而且 WinCE 目标只有 CMake 中的 Visual Studio 生成器支持,所以我无法轻松切换到 make。
【问题讨论】:
-
它无法回答您的问题,但您可以通过类似
mspdbsrv.exe -stop的命令行调用自行关闭它。您还可以使用-verbose命令行参数从中收集更多信息(再加上-start参数或任何其他参数)
标签: windows visual-studio-2010 visual-studio-2012 visual-studio-2008