windows - Avoid mspdbsrv when compiling in Visual Studio (2008) -
when 2 visual studio processes compile in parallel, second reuse instance of mspdbsrv
started first one. when first build terminated , whole process tree terminated (e.g. jenkins), other build fails.
that bug report describes how start manually not killed. thing famous forgetting close files, can fail next build.
is there combination of options under mspdbsrv
not used @ all?
ok, looking generic answer, didn't include current options @ first. answer far sounds mspdbsrv
shouldn't used when options not used. except in trivial test project used (by cmake) check whether msc++ works not used, yet start mspdbsrv.exe
. trivial projects .vcproj
file, compiled via devenv.com compileridc.vcproj /build debug
. build runs following commands 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"
and following commands 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"
this still starts mspdbsrv.exe
. used fact protect jenkins killer time being.
the option /fd
injected devenv.com
. i've tried run via msbuild
, invokes vcbuild
(visual studio 2008) , executes same commands including /fd
option. , wince targets supported visual studio generators in cmake, can't switch make easily.
this not common complaint, there's no existing feedback report on connect.microsoft.com. otherwise recommended way accelerate resolution of problems this, microsoft engineer @ issue.
and no, there no specific option disable mspdbsrv.exe. there 1 opposite, enable it. /fs option forces compiler use it.
strong hints using compiler option that's not commonly used on build machines. did not document guessing required. number 1 candidate /mp option. requires compiler use mspdbsrv.exe since launch compiler multiple times, each working on 1 of source files passed. scenario mspdbsrv.exe required since each compiler instance want write same .pdb file, particularly program database specified in /fd option.
so @ build scripts , remove /mp if see it. document options pass compiler next. filing feedback report @ connect.microsoft.com recommended.
after update: build server using /fd option incorrectly. msdn library article has it:
/fd used development environment, , should not used command line or build script.
i cannot predict effect has on mspdbsrv.exe, has 1 since /fs linked /gm linked /fd. removing option obvious next step.
Comments
Post a Comment