c# - 확인 - 현재 위치에 사용할 수 있는 소스 코드가 없습니다




"어떻게하면 현재 중단 점에 도달 할 수 없습니다. 이 문서에 대한 심볼이로드되지 않았습니다. "경고? (20)

Express Edition의 C # 데스크톱 응용 프로그램. 그런 다음 5 초 후 일을하지 못했습니다.

나는 다음을 시도했다.

  • 디버그 구성, 디버그 플래그 및 전체 디버그 정보가 모든 어셈블리에 설정되어 있는지 확인하십시오.
  • 모든 bin 및 obj 폴더와 프로젝트와 관련된 모든 DLL을 전체 시스템에서 삭제하십시오.
  • 문제를 일으키는 프로젝트를 처음부터 다시 만듭니다.
  • 재부팅하십시오.

솔루션에 두 개의 WinForms 프로젝트가 있습니다. 그들 중 하나는 디버그 정보를로드 하나, 그렇지 않습니다. 그들은 모두 내가 프로젝트 파일에서 정확히 같은 방식으로 디버그 정보를 얻으려고 노력하고있는 어셈블리를 참조합니다. 어떤 아이디어?

이 질문을 검토하기 위해 다시 돌아 왔을 때, 어셈블리가로드 될 때까지 심볼이로드되지 않고 필요한 때까지 어셈블리가로드되지 않을 때까지 여기에 추가하려고합니다. 중단 점이 주 어셈블리의 한 함수에서만 사용되는 라이브러리에있는 경우 해당 함수가 호출 될 때까지 심볼이로드되지 않습니다 (충돌하지 않는 것으로 중단 점을 표시합니다).


"디버깅 시작, 디버그 + Windows + 모듈"옵션은 Microsoft Visual Studio Express 2013 에디션에 없습니다.

도구 옵션 디버깅의 "관리되는 호환 모드 사용"을 선택 취소하면이 문제가 해결됩니다.


.pbd 파일이 bin / Debug 폴더에 없는지 확인하십시오. 그런 다음 프로젝트의 '속성'으로 이동 한 경우 하단에서 '빌드'를 선택한 다음 '고급'을 선택하십시오. 표시된 새 창에서 "디버그 정보"아래의 "전체"를 선택하십시오. 이것은 내 문제 였고 나를 위해 해결했습니다.


C # 응용 프로그램을 VS10을 사용하는 정적 라이브러리와 통합했습니다. 나는 그들을 관리하기 위해 관리 코드 dll을 작성했다. 나는 모든 곳에서 중단 점을 설정할 수 있었지만 정적 인 lib를 설정할 수 있었다. 위에서 설명한 메시지가 있습니다.이 문서에는 아무런 심볼도로드되지 않았습니다. 위의 많은 제안을 시도했습니다. 나는 상징이 적재되고 있지 않다는 것을 알 수 있었다. 드디어 구성 디버그, 비 관리 코드 디버깅 사용 체크 박스가 나타났습니다. 이를 통해 정적 lib 함수에서 중단 점을 설정할 수있었습니다.


Project -> Properties -> Build Tab -> Optimize Code를 마우스 오른쪽 버튼으로 클릭하십시오. 솔루션의 모든 프로젝트 수행


경우에 따라이 오류가 발생하더라도 breakpoint 계속 도달하므로 오류 만 무시하십시오. 이것은 MVC web appViews 에서 상당히 자주 발생 MVC web app .


그 답 중 어느 것도 내 문제를 해결하지 못했습니다. 사실 그 정지와 함께 프로젝트가 실제로로드 된 프로젝트가 아니었기 때문에 나는 또 다른 것을 시도했다. Hans Passant는 디버거를 멈추려는 .dll과 .exe 파일 근처에 복사 된 .pdb 파일을 작성했습니다. 그 파일들은 오래된 날짜가있어서 런타임에 업데이트되지 않았다고 생각했습니다. 수동으로 삭제 한 후 Visual Studio에서 다른 쌍을 만들고이 새 쌍을 .exe 근처에 넣습니다. 이제 breakpoins가 작동합니다!

어쩌면 Visual Studio에서 기존 파일 (.dll 및 .pdb)을 .exe 근처에서 복사하고 바꿀 수 없기 때문입니다. 따라서 수동으로 삭제하면 VS가 .exe 근처에 새 것을 만들 수 있습니다.

나는 또 다른 변경 (체크 등등 - 다른 답변에서)이 뭔가를 촉발 시켰고 Visual Studio가 복사하여 dll과 pdb를 프로젝트 폴더에서 exe 근처의 폴더로 대체 했으므로 해결책이라고 생각한다.

문제의 근본 원인은 Visual Studio가 런타임에 다른 파일을 사용한다는 것입니다. 프로젝트의 파일이 아니라 정지됩니다.

어쩌면 누군가를 도울 수있는이 대답!


내가 몇 년 늦은 건 알지만 뭔가 잘못된 일을하고 위의 단계를 수행 한 다음 실수로 솔루션 구성을 '릴리스'로 설정한다는 것을 알았습니다. :)


디버그 / 일반 설정에서 "내 코드 만"옵션을 비활성화하십시오.


먼저 프로젝트를 마우스 오른쪽 버튼으로 클릭하여 프로젝트 재구성을 시도하십시오.> 다시 빌드가 작동하지 않으면 프로젝트를 깨끗하게하십시오 (프로젝트를 마우스 오른쪽 단추로 클릭 한 다음 정리하십시오)

작동하지 않으면 다음을 확인하십시오.

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. [등록 정보]
  3. [빌드] 탭을 선택 하십시오.
  4. [DEBUG 상수 정의][TRACE 상수 정의] 가 선택되어 있는지 확인하십시오
  5. 빌드 탭 페이지의 하단에있는 [고급] 버튼을 클릭하십시오.
  6. [Debug Info :][full]로 설정되어 있는지 확인하십시오 .
  7. [OK]를 클릭하고 프로젝트를 다시 작성 하십시오 ;-)

(6 단계는 .pdb 파일을 생성합니다. 이것은 디버깅 기호입니다)


선택된 대답으로 인해 제 문제가 해결되었습니다. 그러나 나는 더 많은 것을 할 필요가있다 :

드롭 다운에서 "디버그"를 선택한 경우에도 다음을 수행하십시오.

그리고 프로젝트 속성> 빌드 :

Visual Studio에서 기호를 특정 프로젝트에로드하지 못했습니다. 그래서 그 드롭 다운에서 "Configuration Manager"를 선택하고 웹 프로젝트의 설정이 올바르지 않은 것을 보았습니다 :

그런 다음 "Debug"로 설정하고 .pdb 파일을 생성하기 시작했습니다. 하지만 PDB와 DLL을 수동으로 복사하고 VS가 찾고있는 폴더에 넣어야합니다 (여기서 선택된 대답이 나를 도왔습니다) :


우리는 문제의 원인을 발견했습니다. 이 코드는 "CodeFile"특성 (ASP.NET 2.0 이상) 대신 .aspx 파일의 Page 지시문에서 "CodeBehind"특성을 사용했습니다. 절망의 날 이후, 간단한 검색과 교체로 문제가 해결되었습니다.


웹 응용 프로그램 (IIS Express) 만 :

  • IIS Express 트레이를 마우스 오른쪽 버튼으로 누르고 IIS를 닫습니다.
  • 클린 솔루션


위의 모든 대답을주의 깊게 읽었지만 아무도 내 문제를 해결하지 못했습니다.

필자의 경우 클래스 라이브러리 (DLL)를 컴파일하고 있었다. 디버그 -> 모듈에로드 된 모듈이 없으므로 수동으로 심볼을로드 할 수 없습니다.

내 솔루션은 내 코드에이 줄을 추가하는 것이었다.

System.Diagnostics.Debugger.Launch();

이 코드에 도달하면 예외가 발생하고 .NET Framework는 프로그램을 디버깅하는 데 사용할 Visual Studio (예 : VS 2008의 새 인스턴스, VS 2013의 새 인스턴스)를 묻는 대화 상자를 표시합니다. 프로젝트가로드 된 상태에서 VS의 기존 인스턴스를 선택할 수 있습니다. 그러면 VS 세션에 프로세스가 첨부되고 모든 심볼이로드되며 이제 프로젝트를 디버깅 할 수 있습니다.

물론 컴파일은 Release가 아닌 Debug 구성을 사용하여 수행해야합니다.


유사한 스레드에서 찾은 한스 케이 (Hans K) 에서이 수정 사항을 게시하려면 >> 여기 << :

솔루션에서 마우스 오른쪽 버튼을 클릭 -> 속성

Common Properties -> Startup Project를보십시오.

여러 개의 시작 프로젝트 선택

디버깅해야하는 프로젝트에서 작업 시작을 선택하십시오.


이것은 잠시 동안 다른 옵션을 시도해 보았습니다. 이상한 이유로 디버깅이 중단되었습니다.

도구 -> 옵션 -> 디버깅 -> 일반 -> (untick) "원본 파일이 원본 버전과 정확히 일치하도록 요구"


제 경우에는 프로젝트 속성에서 "코드 최적화"를 선택했습니다. 이로 인해 VS가 내 어셈블리를 "내 코드가 아님"으로보고, 차례대로 심볼을로드하지 않았습니다.

해결책은 이것을 선택 해제하는 것이 었습니다.


첨부 된 스크린 샷에서 볼 수 있듯이 'Attach to Process'옵션을 '디버깅 할 코드 유형을 자동으로 결정'옵션으로 설정하여 오류를 수정할 수있었습니다.

다음 단계를 따르십시오.

  • 메뉴 막대에서 디버그 로 이동하십시오.
  • 프로세스첨부를 클릭하십시오.
  • Attach to 옵션 근처에서 Select 버튼을 클릭하십시오.
  • 코드 유형 선택 창이 나타납니다.
  • 이제 디버깅 할 코드의 유형을 자동으로 결정 하는 옵션을 선택하고 확인 버튼을 클릭하십시오.


컴파일러 설정에서 "디버그 정보 생성"을 활성화해야합니다.


한번 시도해보기 만하면됩니다. 이미 시도해 보셨을 것입니다. 솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭하고 "솔루션 정리"를 클릭하면 솔루션 과 관련된 모든 컴파일 된 임시 파일이 삭제됩니다 .

솔루션을 다시 빌드하고 다시 디버그하십시오.

또한 솔루션에서 여러 프로젝트의 중단 점에 문제가있었습니다. 일부는 x86으로, 일부는 x64로 컴파일되었습니다.


확인해야 할 사항 : '릴리스'가 아닌 '디버그'로 설정되어 있는지 확인하십시오. 시작 프로젝트를 '릴리스'모드로 디버깅 할 수 있지만 참조 된 클래스 라이브러리는 디버그 할 수 없습니다.





breakpoints