Visual Studio 디버거에서 중단점 문제 해결

적용 대상: Visual Studio

중단점 경고

디버깅할 때 중단점에 는 다음과 같은 두 가지 가능한 시각적 상태가 있습니다.

  • 디버거가 대상 프로세스에서 중단점을 성공적으로 설정한 경우 단색 빨간색 원입니다.
  • 중단점을 사용하지 않도록 설정하거나 중단점을 설정하려고 할 때 경고가 발생하는 중공(흰색으로 채워진) 원입니다.

차이를 확인하려면 중단점을 마우스로 가리키고 경고가 있는지 확인합니다. 다음 두 섹션에서는 눈에 띄는 경고와 이를 해결하는 방법을 설명합니다.

"이 문서에 대한 기호가 로드되지 않았습니다."

디버깅할 때 모듈 창(Windows>모듈디버그>)으로 이동하여 모듈이 로드되었는지 여부를 검사.

  • 모듈이 로드된 경우 기호 상태 열을 검사 기호가 로드되었는지 확인합니다.
    • 기호가 로드되지 않으면 기호 상태 검사 문제를 진단합니다. 모듈 창의 모듈 상황에 맞는 메뉴에서 기호 로드 정보...를 선택하여 디버거가 기호를 시도하고 로드하는 위치를 확인합니다. 기호 로드에 대한 자세한 내용은 기호 지정(.pdb) 및 원본 파일을 참조하세요.
    • 기호가 로드되면 PDB에 원본 파일에 대한 정보가 포함되지 않습니다. 몇 가지 가능한 원인은 다음과 같습니다.
      • 원본 파일이 최근에 추가된 경우 모듈의 최신 버전이 로드되고 있는지 확인합니다.
      • /PDBSTRIPPED 링커 옵션을 사용하여 제거된 PDB를 만들 수 있습니다. 제거된 PDB에는 원본 파일 정보가 포함되어 있지 않습니다. 제거된 PDB가 아닌 전체 PDB로 작업하고 있는지 확인합니다.
      • PDB 파일이 부분적으로 손상되었습니다. 파일을 삭제하고 모듈의 클린 빌드를 실행하여 문제를 resolve.
  • 모듈이 로드되지 않은 경우 다음을 검사 원인을 찾습니다.
    • 올바른 프로세스를 디버깅하고 있는지 확인합니다.
    • 올바른 코드를 디버깅하고 있는지 확인합니다. 프로세스 창(Windows> 프로세스 디버그>)에서 디버그하도록 디버거가 구성된 코드 유형을 확인할 수있습니다. 예를 들어 C# 코드를 디버그하려는 경우 디버거가 적절한 형식 및 버전의 .NET(예: 관리형(v4*)과 관리형(v2*/v3*) 및 관리형(CoreCLR))에 대해 구성되어 있는지 확인합니다.

"… 현재 소스 코드는 기본 제공 버전과 다릅니다..."

원본 파일이 변경되고 소스가 디버깅 중인 코드와 더 이상 일치하지 않는 경우 디버거는 기본적으로 코드에서 중단점을 설정하지 않습니다. 일반적으로 이 문제는 소스 파일이 변경되었지만 소스 코드가 다시 빌드되지 않은 경우에 발생합니다. 이 문제를 해결하려면 프로젝트를 다시 빌드합니다. 빌드 시스템에서 프로젝트가 아직 최신 상태가 아니라고 생각되면 프로젝트 시스템을 강제로 다시 빌드할 수 있습니다. 원본 파일을 다시 저장하거나 빌드하기 전에 빌드 출력을 정리하여 프로젝트를 다시 빌드합니다.

드문 시나리오에서는 소스 코드와 일치하지 않고 디버그할 수 있습니다. 소스 코드와 일치하지 않고 디버깅하면 디버깅 환경이 혼란스러울 수 있으므로 계속하려면 어떻게 해야 하는지 확인합니다.

다음 옵션 중 하나를 따라 이러한 안전 검사를 사용하지 않도록 설정합니다.

  • 단일 중단점을 수정하려면 편집기에서 중단점 아이콘을 마우스로 가리키고 설정(기어) 아이콘을 선택합니다. 피킹 창이 편집기에서 추가됩니다. 피킹 창 위쪽에는 중단점의 위치를 나타내는 하이퍼링크가 있습니다. 하이퍼링크를 선택하여 중단점 위치를 수정할 수 있도록 하고 소스 코드가 원래 코드와 다른지 검사.
  • 모든 중단점에 대해 이 설정을 수정하려면 디버그>옵션 및 설정으로 이동합니다. 디버깅/일반 페이지에서 원본 버전과 정확히 일치하는 원본 파일 필요 옵션을 선택 취소합니다. 디버깅을 마쳤으면 이 옵션을 다시 사용하도록 설정해야 합니다.

중단점이 성공적으로 설정되었지만(경고 없음) 적중되지 않았습니다.

이 섹션에서는 디버거가 경고를 표시하지 않을 때 발생하는 문제를 해결하기 위한 정보를 제공합니다. 중단점은 적극적으로 디버깅하는 동안 단색 빨간색 원이지만 중단점은 적중되지 않습니다.

검사 몇 가지 사항은 다음과 같습니다.

  1. 코드가 둘 이상의 프로세스 또는 둘 이상의 컴퓨터에서 실행되는 경우 올바른 프로세스 또는 컴퓨터를 디버깅하고 있는지 확인합니다.
  2. 코드가 실행 중인지 확인합니다. 코드가 실행 중인지 테스트하려면 중단점을 설정한 다음 프로젝트를 다시 빌드하려는 코드 줄에 (C#/VB) 또는 __debugbreak (C++)에 대한 호출 System.Diagnostics.Debugger.Break 을 추가합니다.
  3. 최적화된 코드를 디버깅하는 경우 중단점이 설정된 함수가 다른 함수에 인라인되지 않는지 확인합니다. 이전 검사 설명된 테스트는 Debugger.Break 이 문제를 테스트하는 데도 작동할 수 있습니다.
  4. 프로세스 시나리오에 연결하려면 올바른 유형의 코드(예: 스크립트 코드와 .NET Framework 및 .NET 5 이상)를 디버깅하고 있는지 확인합니다. 조사하려면 프로세스에 연결 대화 상자에서 연결 대상 옵션을 검사 필요한 경우 선택을 선택하여 코드 형식을 변경합니다.

중단점을 삭제했지만 디버깅을 다시 시작할 때 계속 적중합니다.

디버깅하는 동안 중단점을 삭제한 경우 다음에 디버깅을 시작할 때 중단점에 다시 도달할 수 있습니다. 이 중단점에 도달하는 것을 중지하려면 중단점의 모든 인스턴스가 중단점 창에서 제거되었는지 확인합니다.