LINK : fatal error LNK1201: error writing to program database ...

etc 2012. 3. 16. 10:33
구버전의 Visual Studio 로 작업시 (제 경우엔 회사에서 vs2003 을 사용 중입니다.)
디스크 용량은 충분한데도  LINK : fatal error LNK1201: error writing to program database ...
이런 에러가 뜰 때가 있습니다.
이것에 대한 해결 방식 하나를 공유하고자 글을 올립니다.

이 에러가 나는 이유 중 하나는 디버깅을 중단 하면서 해당 프로젝트의 pdb 파일이
VS 에 의해 열린채로 남아 잠긴 상태가 되버리는 것입니다.
VS 를 종료시키고 재실행하면 되지만, 이 에러가 빈번하게 발생한다면
이렇게 하는 것은 매우 불편하죠.

그래서 인터넷 검색 중 MSDN 포럼에서 유용한 스크립트를 찾을 수 있었습니다.
'Toni76' 이란 아이디를 사용하는 외국인이 제시한 솔루션인데
원문글 주소는  http://social.msdn.microsoft.com/Forums/nl/vclanguage/thread/b0271379-3ab1-4e08-af9e-d4f51fe8de79 이고,
pre-build event 설정으로 pdb 에 걸린 핸들 락을 풀어주는 방식입니다.

다음은 'Koltaiga' 란 사람이 원래의 스크립트를 Handle v3.46 에 맞게 조금 수정한 것이고,
저도 이것을 사용했습니다.

@echo off

if "%1"=="" (
  echo Usage: freepdb filename
  echo This will free all handles of VS2003 on filename.pdb
  echo Requires the Handle utility from Windows Sysinternals
  goto :eof
)

cd /d "%~dp0"
for /f "tokens=2-3 skip=5 delims=:" %%a in ('handle -p devenv.exe "%1.pdb"') do (
  for /f "tokens=1,4" %%c in ("%%a %%b") do (
    handle -p %%c -c %%d -y >NUL
  )
)
exit /b 0


제 경우엔 Pre-link Event 에 적어 주었고,
생성 파일명이 프로젝트명과 틀리기 때문에

$(SolutionDir)freepdb\freepdb $(TargetName)

이런식으로 해주었습니다.


'etc' 카테고리의 다른 글

Ankhsvn Shortcut  (0) 2013.10.30
잡설  (0) 2013.05.16
Sublime Text 2 설정  (0) 2013.03.06
: