source

"현재 중단점은 적중되지 않습니다.소스 코드가 원래 버전과 다릅니다."이것은 무엇을 의미합니까?

factcode 2023. 5. 29. 11:13
반응형

"현재 중단점은 적중되지 않습니다.소스 코드가 원래 버전과 다릅니다."이것은 무엇을 의미합니까?

Visual Studio에서 디버깅할 때 때때로 중단점을 추가하지만 중단점이 비어 있고 VS에서 "현재 중단점이 적용되지 않습니다.소스 코드가 원래 버전과 다릅니다." 분명히 이것은 제가 디버그하는 것을 방해합니다.

도대체 그 메시지는 무슨 뜻입니까?어떤 오리지널 버전?솔루션을 열었을 뿐 코드를 전혀 변경하지 않았다면 어떻게 '원본 버전'이 있을 수 있습니까?

"소스 코드가 원본 버전과 다릅니다."라고 쓰여 있습니다.

오른쪽 버튼으로 한 후 "Project Folder"를 합니다.Clean프로젝트의 새 버전을 구축하면 중단점이 다시 작동합니다!

디버그 빌드 구성에서 DLL 프로젝트의 선택을 취소한 경우 새 코드가 빌드되지 않습니다!

에 가다Build --> Configuration Manager ...(VS2010에서) 디버깅하려는 코드가 있는 프로젝트가 현재 빌드 구성인지 확인합니다.

저에게 그것은 웹사이트 프로젝트에서 일하는 중이었습니다.이러한 임시 폴더를 정리한 후 적절한 컴파일러 오류가 반환되었습니다.

  • C:\Documents and Settings\%username%\AppData\Local\Temp\Temporary ASP.NET Files
  • C:\windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

의도적으로 하위 폴더로 이동한 클래스 파일이 루트 폴더에 다시 나타나는 것을 발견하고 마침내 문제를 해결했습니다.VS는 제가 다른 것을 편집하는 동안 그것을 사용했습니다.

이런 적 있어요?

계속해서 마지막으로 성공한 빌드를 실행하시겠습니까?

상자를 선택하고 "예"를 누르면 프로젝트가 컴파일되지 않더라도 마지막으로 성공적인 빌드가 실행됩니다.이것은 중단점을 설정할 때마다 해당 오류가 발생한다는 것을 의미합니다.

이 값을 변경해 보십시오.

  • 도구들
    • 옵션들
      • 프로젝트 및 솔루션
        • 빌드 및 실행
          • 실행 시 빌드 또는 배포 오류가 발생할 경우:시작 안 함

에 가다

  • 도구들
    • 옵션들
      • 디버깅
        • 일반

원본 버전과 정확히 일치하도록 원본 파일 필요 선택을 취소합니다.

릴리스 대신 솔루션 구성에서 디버그를 선택

메뉴 스크린샷

VS의 "출력" 창에 주목합니다.어떤 어셈블리가 로드되고 언제 로드되는지 알려줍니다.폴더 어딘가에서 이전 버전의 어셈블리가 로드되고 있는 것을 볼 수 있습니다.

예를 들어 어셈블리가 여러 개 있고 현재 지원 어셈블리 중 하나를 분리하려고 하는 경우 CLR이 어셈블리 해결을 처리하며, 이 경우 프로젝트에서 참조한 어셈블리 파일이 아닌 다른 어셈블리 파일이 로드될 수 있습니다.

Visual Studio를 닫고 솔루션을 다시 열면 IDE 자체의 버그인 문제를 해결할 수 있습니다(VS2010을 실행 중).

Visual Studio 인스턴스가 둘 이상 실행 중인 경우 문제가 있는 솔루션을 실행 중인 인스턴스만 닫으면 됩니다.

Visual Studio 2017 15.3.1부터 15.3.5까지 이 문제를 해결하는 새로운 방법이 등장했습니다.EditorConfig를 사용하는 경우,charset=utf8옵션을 선택하면 이러한 증상이 발생합니다.VS팀이 이를 재현했고 작업 중이라고 합니다.

그래서 한 가지 해결책은 당신의 의견을 말하는 것입니다.charset=utf8파일의 줄..sysconfig 파일의 줄입니다.

편집: 이 문제는 VS 15.5에서 해결되어야 합니다.

저는 어떤 항목도 문제를 해결하지 못했습니다.방금 그 함수 안에 다음과 같은 코드 줄을 추가했습니다.

int a=0;

그것을 추가함으로써, 나는 이 기능을 원래 버전에 추가하기 위해 비주얼 스튜디오를 작동시킨 것 같습니다.

이 문제는 프로젝트의 코드에 대한 프로젝트 참조 대신 바이너리에 대한 파일 참조를 사용하는 경우에도 자주 발생하며 참조하는 컴파일된 바이너리가 컴퓨터의 해당 소스 코드와 동기화되지 않습니다.이 문제는 함께 제공된 새 소스 코드 없이 소스 제어에서 새 버전의 바이너리를 다운로드했거나 컴퓨터에 몇 가지 버전의 바이너리가 있고 오래된 복사본을 참조하고 있기 때문에 발생할 수 있습니다.이것이 정말로 문제라면, 실용적인 만큼 프로젝트 참조를 사용하는 것이 좋은 이유입니다.

저는 방금 저를 위해 다시 작업하고, 청소하고, 다시 만들었습니다.

이 문제를 해결한 거의 감지할 수 없는 설정이 있습니다.중단점이 발생하지 않는 특정 원본 파일이 있으면 다음에 나열될 수 있습니다.

  • 솔루션 탐색기
    • 솔루션을 마우스 오른쪽 버튼으로 누르십시오.
      • 특성.
        • 공통 속성
          • 디버그 원본 파일
            • "이러한 원본 파일을 찾지 마십시오."

제가 알 수 없는 이유로 VS 2013은 소스 파일을 그곳에 배치하기로 결정했고, 그 결과 더 이상 해당 파일에서 중단점을 찾을 수 없었습니다.이것이 "소스 코드가 원본 버전과 다릅니다"의 원인일 수 있습니다.

디버깅하는 동안 또는 디버깅 세션 사이에 시스템 시간이 변경될 때 프로그래밍 방식, 수동 방식 또는 외부 프로그램에 의해 변경될 수 있습니다.

문제는 디버그 정보가 어셈블리와 동기화되지 않는다는 것입니다.솔루션은 간단합니다.

  1. bin 폴더로 이동
  2. .pdb 파일 제거
  3. 재구축

그 묘기를 부려야 해요!

(이상한 것은, .pdb 파일을 버리지 않고 다시 빌드하는 것이 항상 작동하는 것은 아니라는 것입니다.수정된 날짜가 업데이트되는 것을 볼 수 있지만 체인 어딘가(VS2013 디버거, IIS, 어셈블리 캐시)에서 이 변경 사항이 감지되지 않습니다.

솔루션에 두 개 이상의 프로젝트가 있는 경우 올바른 프로젝트가StartUp Project솔루션의 오른쪽 단추로 하고 특정프로트솔시프설로면프다려를정마니로다선합단택음을클고릭하추오로른쪽우스젝하트로트젝젝작를루의션▁to▁choose다,▁right▁the▁as니선합-특정을 선택합니다.Set As StartUp Project.

시작 프로젝트를 올바르게 설정한 후 스레드가 원하는 중단점에 도달했습니다.

저는 VS2019에서 이 오류를 가지고 있는데 윈도우가 시계가 바뀌었을 때 발생하기 시작한다고 생각합니다.

저도 이것을 접했습니다.문제의 원인이 된 조건:

  • 전체 IIS7 인스턴스를 로컬에서 실행하는 경우
  • 소프트웨어를 별도의 프로젝트로 버전화하고 있습니다.

이전 버전(VS에서 IIS 디버깅에서 이 인스턴스를 가리킬지 묻는 메시지가 표시되고 '예'라고 대답함)을 연 다음, 현재 버전을 연 다음(다시 IIS 프롬프트에 '예'로 응답), 이전 버전에서 디버깅을 시도하여 이 문제를 일으켰습니다.

해결하기 위해, 저는 단지 이전 버전과 의도된 버전을 닫았다가 다시 열었을 뿐이며, 다시 한번 디버깅 소스로 주장했습니다.

은 나게있솔은션루에 .Advanced Build Settings프로젝트 속성 중:

수 없는 로 알수없이설습니다었정으로 되었습니다.none로 설정full중단점이 발생했습니다.

상자로 속성을 연 " 대상자이로이프속연다성을음트젝로면려동"로 이동합니다.Build그런 다음 선택합니다.Advanced...페이지 하단의 단추를 누릅니다.

VS에서 종료 -> .vs 폴더 삭제 -> VS 열기 -> 프로젝트 실행

위의 해결책은 저에게 효과가 있었습니다.이것이 당신에게도 도움이 되기를 바랍니다.

이 문제는 일부 CLR 언어(Managed C++, C# 등)로 구현된 모듈을 로드하는 C++ 프로젝트를 디버깅할 때도 발생합니다.이러한 상황에서 오류 메시지는 오해를 불러일으킵니다.

솔루션은 CLR(공통 언어 런타임) 지원 구성 속성을 시작 프로젝트에 넣고 다시 컴파일하는 것입니다.

활성화 프로그램을 사용 중이고 중단점을 설정한 어셈블리가 아직 로드되지 않은 경우 이 메시지가 표시될 수 있습니다.

활성화 프로그램이 어셈블리를 로드하면 중단점이 해결됩니다(어셈블리 및 디버그 기호가 최신 상태라고 가정).디버깅 메뉴의 모듈 창을 볼 수 있습니다.거기서 당신은 당신의 파일이 속한 어셈블리도 찾아야 합니다.먼저 어셈블리가 로드되었는지 확인합니다.그럼 어디서 실립니까?그런 다음 기호 파일이 로드됩니다.다시 말하지만 기호 파일은 어디에서 로드됩니까?마지막으로 두 버전을 모두 확인합니다.

프로젝트에 기존 파일을 추가한 후 Visual Studio 2017에 추가되었습니다.이것은 저에게 효과가 있었습니다.

  1. 용액을 닫습니다.
  2. 에 가다SolutionFolder\.vs\SolutionName\v15\sqlite3 거제를 제거합니다.storage.ide
  3. 솔루션을 다시 엽니다.

2017년 대비 32비트 빌드에서 이를 경험했습니다.

정확히 어떤 해결책도 저에게 효과가 없었습니다.다시 시작하고 IDE 파일을 지우고, 구축된 솔루션을 정리하고, Gitrepo에서 꺼내어 솔루션을 다시 구축했지만 소용이 없었습니다.

nuget에서 64비트 종속성을 끌어오고 있었는데, 어셈블리를 사용하자마자 소스가 더 이상 최종 실행 파일에 포함되지 않고 IDE 캐시 소스가 구축되었습니다.

nugget 구성을 제거하고, 참조된 어셈블리를 제거하고, 소스를 다운로드하고, log4net을 수동으로 구축하고, 서명하고, 프로젝트의 폴더에 추가하고, 참조를 추가하고, 다시 디버그할 수 있었습니다.

이것은 고통스러웠습니다, 저는 그것이 모두가 볼 수 있도록 답변 목록에 올라 있기를 바랍니다.

편집: IDE 설정에서 "prompt on build error" 옵션이 설정되어 있음에도 불구하고 빌드 중 오류가 발생하지 않았습니다.

계층화된 아키텍처 프로젝트의 여러 프로젝트에서 동일한 문제가 발생했으며, 구성에서 선택한 프로젝트의 빌드 확인란이 선택되지 않은 것이 문제였습니다.그래서 한 프로젝트에 대한 문제가 해결되었습니다.

다른 계층의 경우 구성에서 빌드가 활성화되어 있더라도 동일한 문제를 겪고 있었습니다.저는 프로젝트 청소를 다시 시작하는 것과 같은 다른 모든 옵션을 했지만 도움이 되지 않았습니다.마지막으로 특정 프로젝트에 대한 빌드 확인란의 선택을 취소하고 치료 및 재구축을 수행했습니다.다시 확인란을 표시하고 동일하게 했습니다.그리고 나서 문제가 해결되었습니다.

이게 도움이 되길..

제안된 해결책을 시도해 보았지만 효과가 없었습니다.

프로젝트가 여러 개인 경우 디버그할 프로젝트를 시작 프로젝트로 만듭니다.

여기에 이미지 설명 입력

디버그 모드를 시작하기 전에 중단점을 실행하는 대신 디버그 모드에서 실행하는 동안 중단점을 비활성화하고 다시 설정해 보십시오.

처음에는 명령줄에서 시도했습니다.

명령줄에서 임시 파일을 삭제했습니다.

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\임시 ASP.NET 파일>rd/s 루트

[도구] -> [옵션] -> [디버깅] -> [일반]에서 "내 코드만 활성화" 옵션을 비활성화하면

는 그 문제를 해결했습니다.이것은 WCF 응용 프로그램으로, asx 페이지를 디버그하려고 했습니다.http://blogs.msdn.com/b/zainnab/archive/2010/10/25/understanding-just-my-code.aspx

저의 경우 VS 2012에서 실행 중인 프로세스에 연결하고 있었습니다.첨부 시 다양한 모드(네이티브, 스크립트, 실버라이트, managed 2.0, managed 4.0 등)로 디버깅할 수 있는 옵션이 제공됩니다.기본적으로 디버거는 자동으로 모드를 선택합니다.그러나 자동이 항상 올바른 선택을 하는 것은 아닙니다.프로세스에 여러 유형의 코드가 포함된 경우 디버거가 올바른 코드를 사용하고 있는지 확인합니다.

저의 경우, 저는 에뮬레이터에 대해 테스트한 Windows CE 앱을 개발하고 있었습니다.문제는 실행 파일이 에뮬레이터에 배포되지 않았기 때문에 새로운 .exe가 에뮬레이터에 복사되지 않았기 때문에 개발 환경의 .pdb가 에뮬레이터의 .exe와 동기화되지 않았다는 것입니다.강제로 새 배포를 수행하기 위해 에뮬레이터의 .exe를 삭제해야 했습니다.효과가 있었습니다.

언급URL : https://stackoverflow.com/questions/2468852/the-breakpoint-will-not-currently-be-hit-the-source-code-is-different-from-the

반응형