이 작업을 사용하여 소스 코드를 인덱싱하고 파일 공유 또는 Azure Artifacts 기호 서버에 기호를 게시합니다.
소스 코드를 인덱싱하면 기호 파일을 사용하여 애플리케이션을 빌드하는 데 사용한 컴퓨터가 아닌 다른 컴퓨터에서 애플리케이션을 디버그할 수 있습니다. 예를 들어 소스 코드가 없는 개발 머신에서 빌드 에이전트로 빌드된 애플리케이션을 디버그할 수 있습니다.
기호 서버를 사용하면 제품 이름, 빌드 번호 또는 패키지 이름을 모르고 디버거가 올바른 기호 파일을 자동으로 검색할 수 있습니다.
구문론
# Index sources and publish symbols v2
# Index your source code and publish symbols to a file share or Azure Artifacts symbol server.
- task: PublishSymbols@2
inputs:
#SymbolsFolder: '$(Build.SourcesDirectory)' # string. Path to symbols folder. Default: $(Build.SourcesDirectory).
SearchPattern: '**/bin/**/*.pdb' # string. Required. Search pattern. Default: **/bin/**/*.pdb.
#Manifest: # string. Manifest.
#IndexSources: true # boolean. Index sources. Default: true.
#PublishSymbols: true # boolean. Publish symbols. Default: true.
SymbolServerType: # 'TeamServices' | 'FileShare'. Required when PublishSymbols = true. Symbol server type.
#SymbolsPath: # string. Optional. Use when PublishSymbols = true && SymbolServerType = FileShare. Path to publish symbols.
#CompressSymbols: false # boolean. Optional. Use when SymbolServerType = FileShare. Compress symbols. Default: false.
#SymbolExpirationInDays: '36530' # string. Optional. Use when PublishSymbols = true && SymbolServerType = TeamServices. Symbol Expiration (in days). Default: 36530.
# Advanced
#IndexableFileFormats: 'Default' # 'Default' | 'Pdb' | 'SourceMap' | 'All'. Optional. Use when PublishSymbols = true && SymbolServerType = TeamServices. Symbol file formats to publish. Default: Default.
#DetailedLog: true # boolean. Verbose logging. Default: true.
#TreatNotIndexedAsWarning: false # boolean. Warn if not indexed. Default: false.
#UseNetCoreClientTool: false # boolean. Use NetCore client tool. Default: false.
#SymbolsMaximumWaitTime: # string. Max wait time (min).
#SymbolsProduct: # string. Product.
#SymbolsVersion: # string. Version.
#SymbolsArtifactName: 'Symbols_$(BuildConfiguration)' # string. Artifact name. Default: Symbols_$(BuildConfiguration).
# Index sources and publish symbols v2
# Index your source code and publish symbols to a file share or Azure Artifacts symbol server.
- task: PublishSymbols@2
inputs:
#SymbolsFolder: '$(Build.SourcesDirectory)' # string. Path to symbols folder. Default: $(Build.SourcesDirectory).
SearchPattern: '**/bin/**/*.pdb' # string. Required. Search pattern. Default: **/bin/**/*.pdb.
#IndexSources: true # boolean. Index sources. Default: true.
#PublishSymbols: true # boolean. Publish symbols. Default: true.
SymbolServerType: # 'TeamServices' | 'FileShare'. Required when PublishSymbols = true. Symbol server type.
#SymbolsPath: # string. Optional. Use when PublishSymbols = true && SymbolServerType = FileShare. Path to publish symbols.
#CompressSymbols: false # boolean. Optional. Use when SymbolServerType = FileShare. Compress symbols. Default: false.
#SymbolExpirationInDays: '36530' # string. Optional. Use when PublishSymbols = true && SymbolServerType = TeamServices. Symbol Expiration (in days). Default: 36530.
# Advanced
#IndexableFileFormats: 'Default' # 'Default' | 'Pdb' | 'SourceMap' | 'All'. Optional. Use when PublishSymbols = true && SymbolServerType = TeamServices. Symbol file formats to publish. Default: Default.
#DetailedLog: true # boolean. Verbose logging. Default: true.
#TreatNotIndexedAsWarning: false # boolean. Warn if not indexed. Default: false.
#UseNetCoreClientTool: false # boolean. Use NetCore client tool. Default: false.
#SymbolsMaximumWaitTime: # string. Max wait time (min).
#SymbolsProduct: # string. Product.
#SymbolsVersion: # string. Version.
#SymbolsArtifactName: 'Symbols_$(BuildConfiguration)' # string. Artifact name. Default: Symbols_$(BuildConfiguration).
# Index sources and publish symbols v2
# Index your source code and publish symbols to a file share or Azure Artifacts symbol server.
- task: PublishSymbols@2
inputs:
#SymbolsFolder: '$(Build.SourcesDirectory)' # string. Path to symbols folder. Default: $(Build.SourcesDirectory).
SearchPattern: '**/bin/**/*.pdb' # string. Required. Search pattern. Default: **/bin/**/*.pdb.
#IndexSources: true # boolean. Index sources. Default: true.
#PublishSymbols: true # boolean. Publish symbols. Default: true.
SymbolServerType: # 'TeamServices' | 'FileShare'. Required when PublishSymbols = true. Symbol server type.
#SymbolsPath: # string. Optional. Use when PublishSymbols = true && SymbolServerType = FileShare. Path to publish symbols.
#CompressSymbols: false # boolean. Optional. Use when SymbolServerType = FileShare. Compress symbols. Default: false.
# Advanced
#DetailedLog: true # boolean. Verbose logging. Default: true.
#TreatNotIndexedAsWarning: false # boolean. Warn if not indexed. Default: false.
#SymbolsMaximumWaitTime: # string. Max wait time (min).
#SymbolsProduct: # string. Product.
#SymbolsVersion: # string. Version.
#SymbolsArtifactName: 'Symbols_$(BuildConfiguration)' # string. Artifact name. Default: Symbols_$(BuildConfiguration).
입력
SymbolsFolder
-
기호 폴더 경로
string; 기본값은 $(Build.SourcesDirectory)입니다.
기호 파일을 사용하여 검색되는 폴더의 경로를 지정합니다. 기본값은 $(Build.SourcesDirectory)입니다. 그렇지 않으면 루트 경로(예: $(Build.BinariesDirectory)/MyProject)를 지정합니다.
비고
서버 유형으로 Azure Artifacts 기호 서버를 선택하는 경우 UNC 경로가 지원되지 않습니다.
SearchPattern
-
검색 패턴
string; 필수 사항입니다. 기본값은 **/bin/**/*.pdb입니다.
게시할 PDB 파일을 검색하는 데 사용되는 패턴을 지정합니다. 자세한 내용은 파일 일치 패턴 참조 참조하세요.
Manifest
-
매니페스트
string;
게시할 더 많은 기호 클라이언트 키가 포함된 파일의 경로입니다.
IndexSources
-
인덱스 원본
boolean; 기본값은 true입니다.
PDB 파일에 원본 서버 정보를 삽입할지 여부를 지정합니다. 이 옵션은 Windows 에이전트에서만 지원됩니다.
PublishSymbols
-
기호 게시
boolean; 기본값은 true입니다.
기호 파일을 게시할지 여부를 지정합니다.
SymbolServerType
-
기호 서버 유형
string;
PublishSymbols = true때 필요합니다. 허용되는 값: TeamServices(이 조직/컬렉션의 기호 서버(Azure Artifacts 필요), FileShare(파일 공유)
기호를 게시할 위치를 지정합니다. Azure Artifacts 기호 서버에 게시된 기호는 조직/컬렉션에 액세스할 수 있는 모든 사용자가 액세스할 수 있습니다. Azure DevOps Server는 File share 옵션만 지원합니다. Azure Artifacts에서 기호 서버를 사용하도록 디버깅하기 위한 기호 게시 지침을 참조하세요.
기호게시하는 SymbolsPath - 경로
string; 선택 사항.
PublishSymbols = true && SymbolServerType = FileShare때 사용합니다.
기호를 호스트하는 파일 공유를 지정합니다. 이 값은 symstore.exe add 매개 변수로 /s 호출에 사용됩니다.
SymStore 기호 저장소를 준비하려면 다음을 수행합니다.
- 기호를 저장할 파일 공유 서버에 폴더를 설정합니다. 예를 들어
\fabrikam-share\symbols설정합니다. - 빌드 에이전트 서비스 계정모든 권한을 부여합니다.
이 인수를 비워 두면 기호가 원본 인덱싱되지만 게시되지 않습니다. 또한 방울과 함께 기호를 저장할 수 있습니다. 빌드 아티팩트 게시참조하세요.
CompressSymbols
-
기호 압축
boolean; 선택 사항.
SymbolServerType = FileShare때 사용합니다. 기본값은 false입니다.
파일 공유에 게시할 때 기호를 압축합니다.
SymbolExpirationInDays
-
기호 만료(일)
string; 선택 사항.
PublishSymbols = true && SymbolServerType = TeamServices때 사용합니다. 기본값은 36530입니다.
기호를 보존해야 하는 일 수를 지정합니다.
게시할 기호 파일 형식 IndexableFileFormats -
string; 선택 사항.
PublishSymbols = true && SymbolServerType = TeamServices때 사용합니다. 허용되는 값: Default(업로드할 기본 기호 집합), Pdb(Pdb 기반 기호만 Windows pdb 및 관리형 이식 가능한 pdb)), SourceMap(JavaScript 기반 SourceMap 기호(*.js.map)), All(지원되는 모든 기호 형식). 기본값은 Default입니다.
기호 서버에 게시할 디버그 형식을 지정합니다.
자세한 정보 로깅DetailedLog -
boolean; 기본값은 true입니다.
자세한 정보 로깅을 지정합니다.
TreatNotIndexedAsWarning
-
인덱싱되지 않은 경우 경고
boolean; 기본값은 false입니다.
원본이 PDB 파일에 대해 인덱싱되지 않은 경우 경고할지 여부를 지정합니다. 그렇지 않으면 메시지가 일반 출력으로 기록됩니다.
UseNetCoreClientTool
-
NetCore 클라이언트 도구 사용
boolean; 기본값은 false입니다.
DWARF 및 ELF 파일을 지원하는 기호 업로드 도구의 버전을 사용할지 여부를 지정합니다. 이 옵션은 Windows 에이전트에서만 중요합니다. Windows가 아닌 에이전트에서는 DWARF 및 ELF 파일을 지원하는 기호 업로드 도구의 버전이 항상 사용됩니다.
SymbolsMaximumWaitTime
-
최대 대기 시간(분)
string;
이 작업에 실패하기 전에 대기할 시간(분)을 지정합니다.
SymbolsProduct
-
제품
string;
symstore.exe제품 매개 변수를 지정합니다. 기본값은 $(Build.DefinitionName)입니다.
SymbolsVersion
-
버전
string;
symstore.exe버전 매개 변수를 지정합니다. 기본값은 $(Build.BuildNumber)입니다.
SymbolsArtifactName
-
아티팩트 이름
string; 기본값은 Symbols_$(BuildConfiguration)입니다.
기호 아티팩트에서 사용할 아티팩트 이름을 지정합니다. FileShare 기호 서버 형식에서만 사용해야 합니다. 기본값은 Symbols_$(BuildConfiguration)입니다.
작업 제어 옵션
모든 작업에는 작업 입력 외에 제어 옵션이 있습니다. 자세한 내용은 컨트롤 옵션 및 일반적인 작업 속성참조하세요.
출력 변수
없음.
비고
이 작업을 사용하여 소스 코드를 인덱싱하고 파일 공유 또는 Azure Artifacts 기호 서버에 기호를 게시합니다.
소스 코드를 인덱싱하면 기호 파일을 사용하여 애플리케이션을 빌드하는 데 사용한 컴퓨터가 아닌 다른 컴퓨터에서 애플리케이션을 디버그할 수 있습니다. 예를 들어 소스 코드가 없는 개발 머신에서 빌드 에이전트로 빌드된 애플리케이션을 디버그할 수 있습니다.
기호 서버를 사용하면 디버거가 제품 이름, 빌드 번호 또는 패키지 이름을 모르고 올바른 기호 파일을 자동으로 검색할 수 있습니다.
중요합니다
인덱스 원본 & 기호 게시 작업을 사용하여 게시된 기호를 삭제하려면 먼저 해당 기호를 생성한 빌드를 삭제해야 합니다. 이 작업은 보존 정책을 사용하거나 실행 수동으로 삭제하는수행할 수 있습니다.
인덱싱은 어떻게 작동하나요?
원본을 인덱싱하도록 선택하면 PDB 파일에 추가 섹션이 삽입됩니다. PDB 파일에는 일반적으로 로컬 원본 파일 경로에 대한 참조만 포함됩니다(예: C:\BuildAgent_work\1\src\MyApp\Program.cs. PDB 파일에 삽입된 추가 섹션에는 디버거에 대한 매핑 지침이 포함되어 있습니다. 매핑 정보는 각 로컬 경로에 해당하는 서버 항목을 검색하는 방법을 나타냅니다.
Visual Studio 디버거는 매핑 정보를 사용하여 서버에서 원본 파일을 검색합니다. 원본 파일을 검색하는 실제 명령은 매핑 정보에 포함됩니다. 예제:
tf.exe git view /collection:http://SERVER:8080/tfs/DefaultCollection /teamproject:"93fc2e4d-0f0f-4e40-9825-01326191395d" /repository:"647ed0e6-43d2-4e3d-b8bf-2885476e9c44" /commitId:3a9910862e22f442cd56ff280b43dd544d1ee8c9 /path:"/MyApp/Program.cs" /output:"C:\Users\username\AppData\Local\SOURCE~1\TFS_COMMIT\3a991086\MyApp\Program.cs" /applyfilters
.NET Core 어셈블리에서 만든 이식 가능한 PDB에서 원본 인덱싱을 사용할 수 있나요?
아니요, 하지만 원본 링크 대신 사용할 수 있습니다.
기호는 얼마나 오래 보존되는가?
기호는 빌드와 연결된 Azure Pipelines에 게시된 빌드와 연결됩니다. 수동으로 또는 보존 정책을 사용하여 빌드를 삭제하면 기호도 삭제됩니다. 기호를 무기한 유지하려면 빌드를 무기한 보존표시합니다.
요구 사항
| 요구 사항 | 설명 |
|---|---|
| 파이프라인 유형 | YAML, 클래식 빌드 |
| 다음에서 실행 | 에이전트, DeploymentGroup |
| 요구 | 없음 |
| 기능 | 이 작업은 작업의 후속 작업에 대한 요구 사항을 충족하지 않습니다. |
| 명령 제한 | 어느 것이든 |
| settable 변수 | 어느 것이든 |
| 에이전트 버전 | 2.144.0 이상 |
| 작업 범주 | 빌드 |
| 요구 사항 | 설명 |
|---|---|
| 파이프라인 유형 | YAML, 클래식 빌드 |
| 다음에서 실행 | 에이전트, DeploymentGroup |
| 요구 | 없음 |
| 기능 | 이 작업은 작업의 후속 작업에 대한 요구 사항을 충족하지 않습니다. |
| 명령 제한 | 어느 것이든 |
| settable 변수 | 어느 것이든 |
| 에이전트 버전 | 1.95.0 이상 |
| 작업 범주 | 빌드 |
참고하십시오
- 디버깅을 위한 기호 게시
- Visual Studio 사용하여 디버그
- WinDbg 사용하여 디버그