다른 대 솔루션에있는 외부 프로젝트 (B) 클래스 라이브러리의 어셈블리를 참조하는 프로젝트 (A)가 있습니다.
프로젝트 A에서 프로그램을 실행하는 동안 B에서 클래스 라이브러리를 효율적으로 디버깅하는 방법을 아직 이해하지 못했습니다. 디버그 정보 등과 같은 프로젝트 B에서 활성화해야 할 것이 있습니까?
미리 감사드립니다.
답변
JMC (Just My Code)를 비활성화하십시오.
- 도구-> 옵션-> 디버거
- “내 코드 만 활성화”를 선택 해제하십시오.
기본적으로 디버거는 월드 뷰를 솔루션 내에 포함 된 코드로 제한하려고합니다. 이것은 실제로는 많지만 솔루션에없는 코드를 디버깅하려면 (상황과 마찬가지로) JMC를 비활성화해야 볼 수 있습니다. 그렇지 않으면 코드는 외부 코드로 취급되며 크게보기에서 숨겨집니다.
편집하다
코드가 손상되면 다음을 시도하십시오.
- 디버그-> Windows-> 모듈
- 관심있는 프로젝트의 DLL을 찾으십시오.
- 마우스 오른쪽 버튼으로 클릭-> 기호로드-> 다른 프로젝트의 .PDB 경로 선택
답변
이것은 얼마 동안 나를 괴롭 혔습니다. 내가 일반적으로하는 일은 디버그 모드를 사용하여 외부 라이브러리를 다시 빌드 한 다음 .dll과 .pdb 파일을 웹 사이트의 저장소에 복사하는 것입니다. 이를 통해 라이브러리 코드로 들어갈 수 있습니다.
답변
경로를 가정
계획 A
C:\Projects\ProjectA
계획 B
C:\Projects\ProjectB
ProjectB의 dll은
C:\Projects\ProjectB\bin\Debug\
ProjectB
from에서 디버그하려면 ProjectA
다음을 수행하십시오.
- 복사
B
의 DLL과 DLL의.PDB
받는 사람ProjectA
의 컴파일 디렉토리. - 이제 디버그하십시오
ProjectA
. 디버깅하는 동안 dll의 메서드 나 이벤트 등을 호출해야하는 부분에 코드가 도달하면을 눌러F11
dll의 코드로 들어갑니다.
참고 : .PDB 파일을 복사하지 마십시오
답변
두 개의 Visual Studio 인스턴스를 실행합니다. 하나는 외부 dll과 하나는 기본 응용 프로그램입니다.
외부 dll의 프로젝트 속성에서 다음을 설정하십시오.
빌드 이벤트 :
-
copy /y "$(TargetDir)$(TargetName).dll" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).dll"
-
copy /y "$(TargetDir)$(TargetName).pdb" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).pdb"
디버그 :
-
외부 프로그램을 시작하십시오 :
C:\<path-to-main>\bin\debug\<AppName>.exe
-
작업 디렉토리
C:\<path-to-main>\bin\debug
이렇게하면 외부 dll을 빌드 할 때마다 기본 응용 프로그램 디렉토리에서 업데이트됩니다. 외부 dll의 프로젝트에서 디버그를 누르면 주 응용 프로그램이 실행되지만 디버거는 외부 dll의 중단 점에만 도달합니다. 기본 프로젝트에서 디버그를 누르면 주 응용 프로그램은 가장 최근에 빌드 된 외부 dll로 실행되지만 이제는 디버거가 기본 프로젝트의 중단 점에만 도달합니다.
한 디버거가 두 가지 작업을 모두 수행한다는 것을 알고 있지만 두 가지를이 방법으로 유지하는 것이 더 쉽다는 것을 알았습니다.
답변
[마틴 베켓에 따르면,이 답변을 보낸 사람은]
외부 라이브러리로 디버그 할 수 있습니다.
프로젝트 설정 탭에서 ‘소스 코드’필드에서 ‘visual studio 디렉토리’를 찾아 openCV 소스에 대한 경로를 포함하십시오. 그런 다음 각 디버그 dll의 .pdb 파일이 dll과 동일한 디렉토리에 있는지 확인하십시오.
답변
프로젝트 (B)의 중단 점이 맞지 않아 비슷한 문제가 발생했습니다. 내 솔루션은 dll을 업데이트해야 할 때 프로젝트 (B)를 다시 빌드 한 다음 프로젝트 (A)를 디버그하는 것이 었습니다.
Visual Studio를 사용하면 외부 라이브러리로 디버깅 할 수 있습니다.
답변
NuGet 참조
NuGet 패키지에 의해 -Project_A (project_a.dll 생성) -Project_B (project_b.dll 생성) 및 Project_B에 대한 Project_A 참조를 가정 한 다음 project_a.dll, project_a.pdb를 Project_B / Packages 폴더에 복사하십시오. 실제로는 / bin에 복사해야합니다.
이제 Project_A를 디버깅하십시오. 디버깅하는 동안 dll의 메서드 나 이벤트 등을 호출해야하는 부분에 코드가 도달하면 F11을 눌러 dll의 코드로 들어갑니다.