SymStore 트랜잭션
SymStore에 대한 모든 호출은 트랜잭션으로 기록됩니다. 트랜잭션에는 추가 및 삭제의 두 가지 유형이 있습니다.
기호 저장소가 만들어지면 서버 루트 아래에 “000admin”이라는 디렉터리가 생성됩니다. 000admin 디렉터리에는 각 트랜잭션에 대해 하나의 파일과 server.txt 및 history.txt 로그 파일이 포함됩니다. server.txt 파일에는 현재 서버에 있는 모든 트랜잭션 목록이 포함되어 있습니다. history.txt 파일에는 모든 트랜잭션의 시간 기록이 포함됩니다.
SymStore가 기호 파일을 저장하거나 제거할 때마다 새 트랜잭션 번호가 생성됩니다. 그런 다음, 이름이 이 트랜잭션 번호인 파일이 000admin으로 만들어집니다. 이 파일에는 해당 트랜잭션 중에 기호 저장소에 추가된 모든 파일 또는 포인터 목록이 포함됩니다. 트랜잭션이 삭제되면 SymStore는 해당 트랜잭션 파일을 읽어서 삭제해야 하는 파일과 포인터를 확인합니다.
add 및 del 옵션은 추가 또는 삭제 트랜잭션을 수행할지 여부를 지정합니다. 추가 작업에 /p 옵션을 포함하면 포인터를 추가하도록 지정됩니다. /p 옵션을 생략하면 실제 기호 파일을 추가하도록 지정됩니다.
두 단계로 기호 저장소를 만들 수도 있습니다. 첫 번째 단계에서는 /x 옵션과 함께 SymStore를 사용하여 인덱스 파일을 만듭니다. 두 번째 단계에서는 /y 옵션과 함께 SymStore를 사용하여 인덱스 파일의 정보에서 파일 또는 포인터의 실제 저장소를 만듭니다.
이는 다양한 이유로 유용한 기술이 될 수 있습니다. 예를 들어 이 기술을 사용하면 인덱스 파일이 계속 존재하는 한 저장소가 손실된 경우 기호 저장소를 쉽게 다시 만들 수 있습니다. 또는 기호 파일이 포함된 컴퓨터는 기호 저장소가 만들어질 컴퓨터에 대한 네트워크 연결이 느려질 수 있습니다. 이 경우 기호 파일과 동일한 컴퓨터에 인덱스 파일을 만들고, 인덱스 파일을 두 번째 컴퓨터로 전송한 다음, 두 번째 컴퓨터에 저장소를 만들 수 있습니다.
모든 SymStore 매개 변수의 전체 목록은 SymStore Command-Line 옵션을 참조하세요.
참고 SymStore는 여러 사용자의 동시 트랜잭션을 지원하지 않습니다. 한 명의 사용자가 기호 저장소의 “관리자”로 지정되고 모든 add 및 del 트랜잭션을 처리하는 것이 좋습니다.
트랜잭션 예제
다음은 Windows 2000 빌드 2195의 기호 포인터를 \\MyDir\symsrv에 추가하는 SymStore의 두 가지 예입니다.
symstore add /r /p /f \\BuildServer\BuildShare\2195free\symbols\*.* /s \\MyDir\symsrv /t "Windows 2000" /v "Build 2195 x86 free" /c "Sample add"
symstore add /r /p /f \\BuildServer\BuildShare\2195free\symbols\*.* /s \\MyDir\symsrv /t "Windows 2000" /v "Build 2195 x86 checked" /c "Sample add"
다음 예제에서 SymStore는 \\largeapp\appserver\bins의 애플리케이션 프로젝트에 대한 실제 기호 파일을 \\MyDir\symsrv에 추가합니다.
symstore add /r /f \\largeapp\appserver\bins\*.* /s \\MyDir\symsrv /t "Large Application" /v "Build 432" /c "Sample add"
다음은 인덱스 파일을 사용하는 방법의 예제입니다. 먼저 SymStore는 \\largeapp\appserver\bins\의 기호 파일 컬렉션을 기반으로 인덱스 파일을 만듭니다. 이 경우 인덱스 파일은 세 번째 컴퓨터인 \\hubserver\hubshare에 배치됩니다. /g 옵션을 사용하여 파일 접두사 “\\largeapp\appserver”가 나중에 변경될 수 있도록 지정합니다.
symstore add /r /p /g \\largeapp\appserver /f \\largeapp\appserver\bins\*.* /x \\hubserver\hubshare\myindex.txt
이제 \\largeapp\appserver 컴퓨터에서 모든 기호 파일을 이동하고 \\myarchive\appserver에 배치한다고 가정합니다. 그런 다음, 다음과 같이 \\hubserver\hubshare\myindex.txt 인덱스 파일에서 기호 저장소 자체를 만들 수 있습니다.
symstore add /y \\hubserver\hubshare\myindex.txt /g \\myarchive\appserver /s \\MyDir\symsrv /p /t "Large Application" /v "Build 432" /c "Sample Add from Index"
마지막으로, 이전 트랜잭션에서 추가한 파일을 삭제하는 SymStore의 예제는 다음과 같습니다. 트랜잭션 ID(이 경우 0000000096)를 확인하는 방법에 대한 설명은 아래의 "server.txt 및 history.txt 파일" 섹션을 참조하세요.
symstore del /i 0000000096 /s \\MyDir\symsrv
server.txt 및 history.txt 파일
트랜잭션이 추가될 때 향후 조회 기능을 위해 여러 가지 정보 항목이 server.txt 및 history.txt에 추가됩니다. 다음은 추가 트랜잭션에 대한 server.txt 및 history.txt 줄의 예제입니다.
0000000096,add,ptr,10/09/99,00:08:32,Windows Vista SP 1,x86 fre 1.156c-RTM-2,Added from \\mybuilds\symbols,
이는 쉼표로 구분된 줄입니다. 필드는 다음과 같이 설명됩니다.
필드 | 설명 |
---|---|
0000000096 |
SymStore에서 만든 트랜잭션 ID 번호입니다. |
add |
트랜잭션 유형입니다. 이 필드는 add 또는 del일 수 있습니다. |
ptr |
파일 또는 포인터가 추가되었는지 여부입니다. 이 필드는 file 또는 ptr일 수 있습니다. |
10/09/99 |
트랜잭션이 발생한 날짜입니다. |
00:08:32 |
트랜잭션이 시작된 시간입니다. |
Windows Vista SP 1 |
제품 |
x86 fre |
버전(선택 사항)입니다. |
Added from |
설명(선택 사항)입니다. |
사용 안 함 |
(나중에 사용하도록 예약되었습니다.) |
다음은 트랜잭션 파일 0000000096의 일부 샘플 줄입니다. 각 줄은 디렉터리와 디렉터리에 추가된 파일 또는 포인터의 위치를 기록합니다.
canon800.dbg\35d9fd51b000,\\mybuilds\symbols\sp4\dll\canon800.dbg
canonlbp.dbg\35d9fd521c000,\\mybuilds\symbols\sp4\dll\canonlbp.dbg
certadm.dbg\352bf2f48000,\\mybuilds\symbols\sp4\dll\certadm.dbg
certcli.dbg\352bf2f1b000,\\mybuilds\symbols\sp4\dll\certcli.dbg
certcrpt.dbg\352bf04911000,\\mybuilds\symbols\sp4\dll\certcrpt.dbg
certenc.dbg\352bf2f7f000,\\mybuilds\symbols\sp4\dll\certenc.dbg
del 트랜잭션을 사용하여 원래 add 트랜잭션을 실행 취소하면 이러한 줄이 server.txt에서 제거되고 다음 줄이 history.txt에 추가됩니다.
0000000105,del,0000000096
삭제 트랜잭션에 대한 필드는 다음과 같이 설명됩니다.
필드 | 설명 |
---|---|
0000000105 |
SymStore에서 만든 트랜잭션 ID 번호입니다. |
del |
트랜잭션 유형입니다. 이 필드는 add 또는 del일 수 있습니다. |
0000000096 |
삭제된 트랜잭션입니다. |