소스 서버의 필요성
서비스 중인 혹은 개발 진행중인 응용프로그램에 문제가 발생했을 경우,
이 문제의 파악을 용이하게 하지 위해서 dump파일을 생성하게 된다.
이 dump파일은 해당 프로세스와 동일한 버전의 pdb파일을 필요로 한다.
출시 혹은 개발 진행중인 응용프로그램에서 끊임없이 수정되는 소스 및
pdb파일의 관리를 용이하게 하기 위해서 소스 서버를 구축하게 되고, 이
소스 서버의 역할은 dmp파일이 올바른 pdb및 소스를 자동으로 찾도록 해준다
1. 심볼을 위한 공용폴더 만들기.
A.
B. SYMBOLS_OS : OS 심볼 저장소
C. SYMBOLS_PRODUCT : 개발 어플리케이션 심볼 저장소
2. 관련 프로그램 설치
A. ActivePerl 5.16.1 Build 1601 (64-bit)
B. TortoiseSVN 설치시 command-line 옵션 선택 설치.
C. Debugging Tools for Windows 설치
3. 소스 서버 접속 정보 설정
A. 위치(본인 기준)
i. C:\Program Files\Debugging Tools for Windows (x64)\srcsrv\srcsrv.ini
B. 수정 내용
i. [variables] 아래 MYSERVER=https://에수부이엔 경로/TestServer 추가
ii. [trusted commands] 아래 svn.exe=C:\Program Files\TortoiseSVN\bin\svn.exe 추가(본인기준)
4. 소스 서버에 솔루션 등록
A. 솔루션 탐색기에서 오른쪽 클립 후 Add Solution to Subversion 실행.
B. Pdb 파일에 소스 정보를 입력할 때 해당 경로가 사용된다.
5. 환경 변수 설정
A. _NT_SYMBOL_PATH(본인기준)
i. SRV*\\대상 아이피\symbols\SYMBOLS_OS*http://msdl.microsoft.com/download/symbols;\\대상 아이피\symbols\SYMBOLS_PRODUCT
B. PATH(본인기준)
i. C:\Program Files\Debugging Tools for Windows (x64);C:\Program Files\Debugging Tools for Windows (x64)\srcsrv;C:\Program Files\TortoiseSVN\bin
6. 테스트
A.
i. 위 내용으로 버전 1을 생성 후 SVN에 커밋을 한다.
ii.
iii. 위와 같이 svnindex /source=소스위치 /symbols=심볼위치 하여 ‘소스 인덱싱’을 실행
iv. 인덱싱이 잘 되지 않고 “zero source … “과 같은 결과를 출력한다면 “c:\” 에서 진행을 해보는 것도 방법이다.
v.
vi. 위와 같은 ‘심볼 스토어’에 등록한다. 심볼 스토어의 위치는 앞서 ‘1’에서 설명한 위치로 다음이 실행되면 아래와 같은 모습을 볼 수 있다.
vii.
viii. 등록된 심볼을 확인하는 방법은 다음과 같다.
ix.
x. 위의 그림에서 첫 네모는 명령이며 두 번째 네모에서 소스 리비전을 확인 할 수 있다.
B.
i. 위 내용으로 버전 2를 생성하고 앞서 설명한 바와 같이 소스 인덱싱과 심볼을 스토어에 등록한다.
7. 디버깅
A.
B. 앞서 실행한 두 프로젝트를 통해서 두 개의 덤프를 생성하고 우선 v2 버전의 덤프를 실행한다.
C. 기호 설정 항목 혹은 도구->옵션->디버깅에서 다음의 정보를 확인한다.
D.
E. 환경 변수 사용에 체크가 되어 있음을 확인
F.
G. 소스 서버 지원 사용에 체크.
H.
I. 모든 환경에 대해서 설정이 되어 있다면 실행 시 다음과 같은 메시지를 만날 수 있다.
i. 해당 리비전을 가져오겠느냐는 물음으로 실행을 누르면 소스를 가져와 임시 폴더에 저장한다.
ii. 주의 사항 : 원본 혹은 받아 오고자 하는 파일과 동일 경로에 같은 이름의 파일이 있다면 svn cat는 실행되지 않는다. 즉 위의 메시지가 뜨지 않고 바로 기존 파일에 연결 된다.
J. 파일을 가져오면 다음과 같이 정상적으로 해당 리비전의 소스가 불려지는 것을 확인 할 수 있다.
K.
8. 추가(편의 사항)
A. 빌드 후에 앞서 진행한 cmd line을 실행하는 일은 상당히 번거로운 일이다.
B.
C. 빌드 후 이벤트 등록(예시)
i. call svnindex /source="$(ProjectDir)" /symbols="$(TargetDir)"
ii. call symstore add /r /f "$(TargetDir)*.*" /s "E:\Debugging\Symbols\Products" /t "$(SolutionName)"
D.
E. 이와 같은 결과를 얻을 수 있다.
이상~ 아 힘들다....
'프로젝트 자동화' 카테고리의 다른 글
[프로젝트 자동화] 설치 및 운용 가이드(CruiseControl.net ) (0) | 2013.02.18 |
---|---|
[프로젝트 자동화] cruisecontrol.net 활용 (0) | 2013.02.13 |