我们有几个C++解决方案,使用批处理文件运行一些构建脚本,为每个解决方案中的配置调用msbuild.exe。这在3台开发机和一台构建机上都能正常工作,但是其中一个项目开始在链接时挂起。这只会在最新的四核2.8ghz机器上发生,它运行在Windows Server 2003上,而其他机器则运行在XP或Vista上。即使我更改bat文件中的构建顺序,这也会持续发生。如果我在该机器上从IDE运行构建,则不会挂起。有什么可能导致这种情况的想法吗?我使用的是Visual Studio 2008。
编辑:我现在看到了挂起时正在运行以下内容:
- link.exe(2个实例),一个具有大量内存使用量,另一个具有少量内存使用量。 - vcbuild.exe - msbuild.exe - vcbuildhelper.exe - mspdbsrv.exe 编辑:exe文件存在,pdb文件也存在。exe文件被某个进程锁定,我无法删除它或移动它。但我可以删除pdb文件。如果我只使用VCBuild.exe,我也会遇到同样的问题。我决定尝试调试2个link.exe进程和mspdbsrv.exe进程。当我将调试器/MSdev IDE连接到它们时,我收到一个消息框,说应用程序死锁和/或“所有线程已退出”。我想我得检查一下那台机器上的msdev安装是否有服务包。
编辑:在debug.htm输出文件中,生成link.exe命令后会输出各种各样的内容。但是,在release buildlog.htm中,linke.exe行是最后一行。这显然是链接器挂起了。绝对是Microsoft的错误。现在我正在尝试弄清楚.rsp(链接器响应)文件是什么。当我发出以下命令时: link.exe @c:\\Release\RSP00000535202392.rsp /NOLOGO /ERRORREPORT:QUEUE
这是发布版本构建日志中的最后一行。调试版本则在此之后有更多信息。重新安装不同版本的Visual Studio并没有解决问题。我将向Microsoft提交一个问题/工单。如果我能解决它,我会发布答案。
编辑:我现在看到了挂起时正在运行以下内容:
- link.exe(2个实例),一个具有大量内存使用量,另一个具有少量内存使用量。 - vcbuild.exe - msbuild.exe - vcbuildhelper.exe - mspdbsrv.exe 编辑:exe文件存在,pdb文件也存在。exe文件被某个进程锁定,我无法删除它或移动它。但我可以删除pdb文件。如果我只使用VCBuild.exe,我也会遇到同样的问题。我决定尝试调试2个link.exe进程和mspdbsrv.exe进程。当我将调试器/MSdev IDE连接到它们时,我收到一个消息框,说应用程序死锁和/或“所有线程已退出”。我想我得检查一下那台机器上的msdev安装是否有服务包。
编辑:在debug.htm输出文件中,生成link.exe命令后会输出各种各样的内容。但是,在release buildlog.htm中,linke.exe行是最后一行。这显然是链接器挂起了。绝对是Microsoft的错误。现在我正在尝试弄清楚.rsp(链接器响应)文件是什么。当我发出以下命令时: link.exe @c:\\Release\RSP00000535202392.rsp /NOLOGO /ERRORREPORT:QUEUE
这是发布版本构建日志中的最后一行。调试版本则在此之后有更多信息。重新安装不同版本的Visual Studio并没有解决问题。我将向Microsoft提交一个问题/工单。如果我能解决它,我会发布答案。