Share via


Set-PSBreakpoint

줄, 명령 또는 변수에 중단점을 설정합니다.

Syntax

Set-PSBreakpoint
   [-Action <ScriptBlock>]
   [[-Column] <Int32>]
   [-Line] <Int32[]>
   [-Script] <String[]>
   [-Runspace <Runspace>]
   [<CommonParameters>]
Set-PSBreakpoint
   [-Action <ScriptBlock>]
   -Command <String[]>
   [[-Script] <String[]>]
   [-Runspace <Runspace>]
   [<CommonParameters>]
Set-PSBreakpoint
   [-Action <ScriptBlock>]
   [[-Script] <String[]>]
   -Variable <String[]>
   [-Mode <VariableAccessMode>]
   [-Runspace <Runspace>]
   [<CommonParameters>]

Description

cmdlet은 Set-PSBreakpoint 스크립트 또는 현재 세션의 명령 실행에서 중단점을 설정합니다. 스크립트를 실행하거나 명령을 실행하기 전에 또는 디버깅 중에 다른 중단점에서 중지된 경우 중단점을 설정하는 데 사용할 Set-PSBreakpoint 수 있습니다.

Set-PSBreakpoint 는 원격 컴퓨터에서 중단점을 설정할 수 없습니다. 원격 컴퓨터에서 스크립트를 디버그하려면 스크립트를 로컬 컴퓨터로 복사한 다음 로컬로 디버그하세요.

Set-PSBreakpoint 명령은 다음 세 가지 유형의 중단점 중 하나를 만듭니다.

  • 줄 중단점 - 특정 선 및 열 좌표에서 중단점을 설정합니다.
  • 명령 중단점 - 명령 및 함수에 중단점을 설정합니다.
  • 변수 중단점 - 변수에 중단점을 설정합니다.

단일 Set-PSBreakpoint 명령에서 여러 줄, 명령 또는 변수에 중단점을 설정할 수 있지만 각 Set-PSBreakpoint 명령은 중단점의 한 유형만 설정합니다.

중단점에서 PowerShell은 일시적으로 실행을 중지하고 디버거를 제어합니다. 명령 프롬프트가 변경 DBG\>되고 디버거 명령 집합을 사용할 수 있게 됩니다. 그러나 Action 매개 변수를 사용하여 중단점에 대한 조건이나 로깅 또는 진단 같은 추가 작업을 수행하는 지침과 같은 대체 응답을 지정할 수 있습니다.

Set-PSBreakpoint cmdlet은 PowerShell 스크립트 디버깅을 위해 설계된 여러 cmdlet 중 하나입니다. PowerShell 디버거에 대한 자세한 내용은 about_Debuggers 참조하세요.

예제

예제 1: 줄에 중단점 설정

다음은 Sample.ps1 스크립트의 줄 5에 중단점을 설정하는 예제입니다. 스크립트가 실행되면 5줄이 실행되기 직전에 실행이 중지됩니다.

Set-PSBreakpoint -Script "sample.ps1" -Line 5

Column     : 0
Line       : 5
Action     :
Enabled    : True
HitCount   : 0
Id         : 0
Script     : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1

줄 번호 Set-PSBreakpoint 별로 새 중단점을 설정하면 cmdlet은 중단점 ID 및 적중 횟수를 포함하는 줄 중단점 개체(System.Management.Automation.LineBreakpoint)를 생성합니다.

예제 2: 함수에 중단점 설정

이 예제에서는 Sample.ps1 cmdlet의 Increment 함수에 명령 중단점을 만듭니다. 매번 지정된 함수를 호출하기 직전에 스크립트의 실행이 중지됩니다.

Set-PSBreakpoint -Command "Increment" -Script "sample.ps1"

Command    : Increment
Action     :
Enabled    : True
HitCount   : 0
Id         : 1
Script     : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1

결과는 명령 중단점 개체입니다. 스크립트를 실행하기 전에 HitCount 속성의 값은 0입니다.

예제 3: 변수에 중단점 설정

다음은 Sample.ps1 스크립트의 서버 변수에 중단점을 설정하는 예제입니다. 값이 ReadWriteMode 매개 변수를 사용하여 변수 값을 읽고 값이 변경되기 직전에 실행을 중지합니다.

Set-PSBreakpoint -Script "sample.ps1" -Variable "Server" -Mode ReadWrite

예제 4: 지정된 텍스트로 시작하는 모든 명령에 중단점 설정

다음은 "write"로 시작하는 Sample.ps1 스크립트의 모든 명령에 중단점을 설정하는 예제입니다 Write-Host.

Set-PSBreakpoint -Script Sample.ps1 -Command "write*"

예제 5: 변수 값에 따라 중단점 설정

다음은 변수 값이 DiskTest 2보다 큰 경우에만 스크립트의 함수 Test.ps1 에서 실행을 중지하는 $Disk 예제입니다.

Set-PSBreakpoint -Script "test.ps1" -Command "DiskTest" -Action { if ($Disk -gt 2) { break } }

Action은 함수의 변수 값을 $Disk 테스트하는 스크립트 블록입니다.

이 작업은 조건이 충족되는 경우 키워드(keyword) 사용하여 break 실행을 중지합니다. 대안(및 기본값)은 Continue입니다.

예제 6: 함수에 중단점 설정

다음은 함수에 중단점을 설정하는 예제입니다 CheckLog . 명령은 스크립트를 지정하지 않으므로 중단점은 현재 세션에서 실행되는 모든 항목에 대해 설정됩니다. 디버거는 함수가 선언될 때가 아니라 호출될 때 중단됩니다.

PS> Set-PSBreakpoint -Command "checklog"
Id       : 0
Command  : checklog
Enabled  : True
HitCount : 0
Action   :

function CheckLog {
>> get-eventlog -log Application |
>> where {($_.source -like "TestApp") -and ($_.Message -like "*failed*")}
>>}
>>
PS> Checklog
DEBUG: Hit breakpoint(s)
DEBUG:  Function breakpoint on 'prompt:Checklog'

예제 7: 여러 줄에 중단점 설정

다음은 Sample.ps1 스크립트에서 세 줄 중단점을 설정하는 예제입니다. 스크립트에 지정된 각 줄의 열 2에 하나의 중단점을 설정합니다. Action 매개 변수에 지정된 작업은 모든 중단점에 적용됩니다.

PS C:\> Set-PSBreakpoint -Script "sample.ps1" -Line 1, 14, 19 -Column 2 -Action {&(log.ps1)}

Column     : 2
Line       : 1
Action     :
Enabled    : True
HitCount   : 0
Id         : 6
Script     : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1


Column     : 2
Line       : 14
Action     :
Enabled    : True
HitCount   : 0
Id         : 7
Script     : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1


Column     : 2
Line       : 19
Action     :
Enabled    : True
HitCount   : 0
Id         : 8
Script     : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1

예제 8: Runspace에서 중단점 설정

이 예제에서는 작업이 시작됩니다. Runspace는 변수에 저장되고 Runspace 매개 변수를 Set-PSBreakPoint 사용하여 명령에 전달됩니다.

Start-Job -ScriptBlock {
    Start-Sleep -Seconds 10
}

$runspace = Get-Runspace -Id 1

Set-PSBreakpoint -Command Start-Sleep -Runspace $runspace

매개 변수

-Action

각 중단점에서 중단되지 않는 대신 실행되는 명령을 지정합니다. 명령이 포함된 스크립트 블록을 입력합니다. 이 매개 변수를 사용하여 조건부 중단점을 설정하거나 테스트 또는 로깅과 같은 다른 작업을 수행할 수 있습니다.

이 매개 변수를 생략하거나 작업을 지정하지 않으면 중단점에서 실행이 중지되고 디버거가 시작됩니다.

Action 매개 변수를 사용하면 작업 스크립트 블록이 각 중단점에서 실행됩니다. 스크립트 블록에 Break 키워드(keyword) 포함되어 있지 않으면 실행이 중지되지 않습니다. 스크립트 블록에서 계속 키워드(keyword) 사용하는 경우 다음 중단점까지 실행이 다시 시작됩니다.

자세한 내용은 about_Script_Blocks, about_Breakabout_Continue 참조하세요.

Type:ScriptBlock
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Column

실행이 중지되는 스크립트 파일의 열 번호를 지정합니다. 열 번호를 하나만 입력합니다. 기본값은 열 1입니다.

열 값은 중단점을 지정하기 위해 Line 매개 변수 값과 함께 사용됩니다. Line 매개 변수가 여러 줄을 지정하는 경우 Column 매개 변수는 지정된 각 줄의 지정된 열에 중단점을 설정합니다. PowerShell은 지정된 줄 및 열 위치에 있는 문자를 포함하는 문 또는 식 앞에 실행을 중지합니다.

열은 열 번호 1(0이 아님)부터 왼쪽 위 여백에서 계산됩니다. 스크립트에 없는 열을 지정하면 오류가 선언되지 않지만 중단점은 실행되지 않습니다.

Type:Int32
Position:2
Default value:1
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Command

명령 중단점을 설정합니다. cmdlet 이름(예: Get-Process함수 이름)을 입력합니다. 야생카드 허용됩니다.

각 명령의 각 인스턴스가 실행되기 직전에 실행이 중지됩니다. 명령이 함수인 경우 함수가 호출될 때마다, 그리고 각 BEGIN, PROCESS 및 END 섹션에서 실행이 중지됩니다.

Type:String[]
Aliases:C
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-Line

스크립트에서 줄 중단점을 설정합니다. 하나 이상의 줄 번호를 쉼표로 구분하여 입력합니다. PowerShell은 지정된 각 줄에서 시작되는 문을 실행하기 직전에 중지됩니다.

줄은 줄 번호 1(0이 아님)으로 시작하는 스크립트 파일의 왼쪽 위 여백에서 계산됩니다. 빈 줄을 지정하면 빈 줄이 아닌 다음 줄 앞에서 실행이 중지됩니다. 줄이 범위를 벗어나면 중단점이 적중되지 않습니다.

Type:Int32[]
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Mode

변수 중단점을 트리거하는 액세스 모드를 지정합니다. 기본값은 Write입니다.

이 매개 변수는 변수 매개 변수가 명령에 사용되는 경우에만 유효합니다. 이 모드는 명령에 설정된 모든 중단점에 적용됩니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.

  • 쓰기 - 새 값이 변수에 기록되기 직전에 실행을 중지합니다.
  • 읽기 - 변수가 읽혀질 때, 즉 값에 액세스할 때 할당, 표시 또는 사용 시 실행을 중지합니다. 읽기 모드에서는 변수 값이 변경될 때 실행이 중지되지 않습니다.
  • ReadWrite - 변수를 읽거나 쓸 때 실행을 중지합니다.
Type:VariableAccessMode
Accepted values:Read, Write, ReadWrite
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Runspace

지정된 Runspace에서 중단점과 상호 작용할 수 있도록 Runspace 개체의 ID를 지정합니다.

이 매개 변수는 PowerShell 7.2에 추가되었습니다.

Type:Runspace
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Script

이 cmdlet이 중단점을 설정하는 스크립트 파일의 배열을 지정합니다. 스크립트 파일 중 하나 이상의 경로 및 파일 이름을 입력합니다. 파일이 현재 디렉터리에 있는 경우 경로를 생략할 수 있습니다. 야생카드 허용됩니다.

기본적으로 변수 중단점 및 명령 중단점은 현재 세션에서 실행되는 모든 명령에 설정됩니다. 이 매개 변수는 줄 중단점을 설정하는 경우에만 필요합니다.

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Variable

이 cmdlet이 중단점을 설정하는 변수 배열을 지정합니다. 달러 기호($)가 없는 쉼표로 구분된 변수 목록을 입력합니다.

Mode 매개 변수를 사용하여 중단점을 트리거하는 액세스 모드를 결정합니다. 기본 모드인 Write는 새 값이 변수에 기록되기 직전에 실행을 중지합니다.

Type:String[]
Aliases:V
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

입력

None

개체를 이 cmdlet으로 파이프할 수 없습니다.

출력

CommandBreakpoint

LineBreakpoint

VariableBreakpoint

Set-PSBreakpoint 는 설정한 각 중단점을 나타내는 개체를 반환합니다.

참고

PowerShell에는 다음 별칭이 포함됩니다.Set-PSBreakpoint

  • 모든 플랫폼:

    • sbp
  • Set-PSBreakpoint 는 원격 컴퓨터에서 중단점을 설정할 수 없습니다. 원격 컴퓨터에서 스크립트를 디버그하려면 스크립트를 로컬 컴퓨터로 복사한 다음 로컬로 디버그하세요.

  • 둘 이상의 줄, 명령 또는 변수 Set-PSBreakpoint 에 중단점을 설정하면 각 항목에 대한 중단점 개체가 생성됩니다.

  • 명령 프롬프트에서 함수 또는 변수에 중단점을 설정하는 경우 함수 또는 변수를 만들기 전이나 만든 후에 중단점을 설정할 수 있습니다.