본문 바로가기

프로젝트 자동화

[프로젝트 자동화] 소스 서버 구축

소스 서버의 필요성

 서비스 중인 혹은 개발 진행중인 응용프로그램에 문제가 발생했을 경우

이 문제의 파악을 용이하게 하지 위해서 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. 이와 같은 결과를 얻을 수 있다



이상~ 아 힘들다....