DLL(동적 연결 라이브러리)은 둘 이상의 앱에서 사용할 수 있는 코드와 데이터를 포함하는 라이브러리입니다. Visual Studio를 사용하여 DLL을 만들고, 빌드하고, 구성하고, 디버그할 수 있습니다.
DLL 만들기
다음 Visual Studio 프로젝트 템플릿은 DLL을 만들 수 있습니다.
- 클래스 라이브러리(.NET, .NET Framework 및 기타 앱 플랫폼)
- Windows Forms 컨트롤 라이브러리(.NET 및 .NET Framework)
- Dynamic-Link 라이브러리(DLL)(C++)
Windows Forms 컨트롤 라이브러리 디버깅은 클래스 라이브러리 디버깅과 비슷합니다. 자세한 내용은 Windows Forms 컨트롤을 참조하세요.
일반적으로 다른 프로젝트에서 DLL을 호출합니다. DLL 구성에 따라 호출 프로젝트를 디버그할 때 DLL 코드를 한 단계씩 실행하여 디버그할 수 있습니다.
DLL 디버그 구성
Visual Studio 프로젝트 템플릿을 사용하여 앱을 만들 때 Visual Studio는 디버그 및 릴리스 빌드 구성에 필요한 설정을 자동으로 만듭니다. 필요한 경우 이러한 설정을 변경할 수 있습니다. 자세한 내용은 다음 문서를 참조하세요.
- 방법: 디버그 및 릴리스 구성 설정
- C++ 디버그 구성에 대한 프로젝트 설정
- .NET C# 디버그 구성에 대한 프로젝트 설정
- C# 디버그 구성에 대한 프로젝트 설정
- Visual Basic 디버그 구성에 대한 프로젝트 설정
C++ DebuggableAttribute를 설정하세요.
디버거가 C++ DLL에 연결하려면 C++ 코드를 내보내 DebuggableAttribute
야 합니다.
설정 DebuggableAttribute
하려면:
솔루션 탐색기에서 C++ DLL 프로젝트를 선택하고 속성 아이콘을 선택하거나 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
속성 창의 링커>디버깅 아래에서 디버깅 가능한 어셈블리에 대해 예(/ASSEMBLYDEBUG)를 선택합니다.
자세한 내용은 /ASSEMBLYDEBUG를 참조하세요.
C/C++ DLL 파일 위치 설정
외부 DLL을 디버그하려면 호출 프로젝트에서 DLL, 해당 .pdb 파일 및 DLL에 필요한 다른 파일을 찾을 수 있어야 합니다. 사용자 지정 빌드 작업을 만들어 이러한 파일을 <프로젝트 폴더>\디버그 출력 폴더에 복사하거나 파일을 수동으로 복사할 수 있습니다.
C/C++ 프로젝트의 경우 출력 폴더에 복사하는 대신 프로젝트 속성 페이지에서 헤더 및 LIB 파일 위치를 설정할 수 있습니다.
C/C++ 헤더 및 LIB 파일 위치를 설정하려면 다음을 수행합니다.
솔루션 탐색기에서 C/C++ DLL 프로젝트를 선택하고 속성 아이콘을 선택하거나 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
속성 창의 맨 위에 있는 구성에서 모든 구성을 선택합니다.
C/C++>일반>추가 포함 디렉터리 아래에서 헤더 파일이 있는 폴더를 지정합니다.
링커>일반>추가 라이브러리 디렉터리 아래에서 LIB 파일이 있는 폴더를 지정합니다.
링커>입력>추가 종속성 아래에서 LIB 파일의 전체 경로와 파일 이름을 지정합니다.
확인을 선택합니다.
C++ 프로젝트 설정에 대한 자세한 내용은 Windows C++ 속성 페이지 참조를 참조하세요.
디버그 버전 빌드
디버깅을 시작하기 전에 DLL의 디버그 버전을 빌드해야 합니다. DLL을 디버그하려면 호출 앱이 해당 .pdb 파일 및 DLL에 필요한 다른 파일을 찾을 수 있어야 합니다. 자세한 내용은 방법: 디버그 및 릴리스 구성을 설정합니다.
사용자 지정 빌드 작업을 만들어 DLL 파일을< 호출하는 프로젝트 폴더>\디버그 출력 폴더에 복사하거나 파일을 수동으로 복사할 수 있습니다.
올바른 위치에서 DLL을 호출해야 합니다. 이는 분명해 보일 수 있지만 호출 앱이 DLL의 다른 복사본을 찾아서 로드하는 경우 디버거는 설정한 중단점에 도달하지 않습니다.
DLL 디버그
DLL을 직접 실행할 수 없습니다. 일반적으로 .exe 파일인 앱에서 호출해야 합니다.
DLL을 디버그하려면 호출 앱에서 디버깅을 시작하거나 호출 앱을 지정하여 DLL 프로젝트에서 디버그 할 수 있습니다. 디버거 직접 실행 창을 사용하여 호출 앱을 사용하지 않고 디자인 타임에 DLL 함수 또는 메서드를 평가할 수도 있습니다.
호출 앱에서 디버깅 시작
DLL을 호출하는 앱은 다음과 같습니다.
- DLL과 동일하거나 다른 솔루션에 있는 Visual Studio 프로젝트의 앱입니다.
- 테스트 또는 프로덕션 컴퓨터에서 이미 배포되고 실행 중인 기존 앱입니다.
- 웹에 위치하고 URL을 통해 액세스합니다.
- DLL을 포함하는 웹 페이지가 있는 웹앱입니다.
호출 앱 디버깅을 시작하기 전에 DLL에서 중단점을 설정합니다. 중단점 시작을 참조하세요. DLL 중단점이 적중되면 코드를 단계별로 실행하여 각 줄에서 동작을 관찰할 수 있습니다. 자세한 내용은 디버거에서 코드 탐색을 참조하세요.
호출 앱에서 DLL을 디버그하려면 다음을 수행할 수 있습니다.
호출 앱에 대한 프로젝트를 열고 디버그> 또는 디버깅 시작을 선택하거나 F5 키를 눌러 디버깅을 시작합니다.
또는
테스트 또는 프로덕션 컴퓨터에서 이미 배포되고 실행 중인 앱에 연결합니다. 웹 사이트 또는 웹앱의 DLL에 이 메서드를 사용합니다. 자세한 내용은 방법: 실행 중인 프로세스에 연결를 참조하십시오.
디버깅하는 동안 모듈 창을 사용하여 DLL을 확인하고 앱이 로드하는 파일을 .exe 수 있습니다. 디버깅하는 동안 모듈 창을 열려면Windows>모듈>를 선택합니다. 자세한 내용은 방법: 모듈 창 사용을 참조하세요.
즉시 창 사용
직접 실행 창을 사용하여 디자인 타임에 DLL 함수 또는 메서드를 평가할 수 있습니다. 직접 실행 창은 호출 앱의 역할을 합니다.
비고
대부분의 프로젝트 형식에서 디자인 타임에 직접 실행 창을 사용할 수 있습니다. SQL, 웹 프로젝트 또는 스크립트에는 지원되지 않습니다.
예를 들어 클래스Test
에서 명명 Class1
된 메서드를 테스트하려면 다음을 수행합니다.
DLL 프로젝트가 열린 상태에서 Ctrl>>를 누르거나 디버그++를 선택하여 즉시 창을 엽니다.
직접
Class1
다음 C# 코드를 입력하고 Enter 키를 눌러 형식 의 개체를 인스턴스화합니다. 이 관리 코드는 적절한 구문 변경을 통해 C# 및 Visual Basic에 대해 작동합니다.Class1 obj = new Class1();
C#에서는 모든 이름이 완전히 자격을 갖추어야 합니다. 언어 서비스가 식을 평가하려고 할 때 메서드 또는 변수는 현재 범위와 컨텍스트에 있어야 합니다.
하나의 매개 변수를 사용한다고
Test
가정하면int
창을 사용하여 평가Test
합니다.?obj.Test(10);
결과는 직접 실행 창에 출력됩니다.
중단점을 내부에 배치한 다음 함수를 다시 평가하여 디버그
Test
를 계속할 수 있습니다.중단점이 걸리고, 단계별로
Test
를 실행할 수 있습니다. 실행이 종료Test
되면 디버거가 디자인 모드로 복귀합니다.
혼합 모드 디버깅
관리 코드 또는 네이티브 코드에서 DLL에 대한 호출 앱을 작성할 수 있습니다. 네이티브 앱이 관리되는 DLL을 호출하고 둘 다 디버그하려는 경우 프로젝트 속성에서 관리되는 디버거와 네이티브 디버거를 모두 사용하도록 설정할 수 있습니다. 정확한 프로세스는 DLL 프로젝트 또는 호출 앱 프로젝트에서 디버깅을 시작할지 여부에 따라 달라집니다. 자세한 내용은 방법: 혼합 모드에서 디버그를 참조하세요.
관리되는 호출 프로젝트에서 네이티브 DLL을 디버그할 수도 있습니다. 자세한 내용은 관리 코드와 네이티브 코드를 디버그하는 방법을 참조하세요.
관련 콘텐츠
- 관리 코드 디버그
- C++ 프로젝트 디버그 준비
- C#, F# 및 Visual Basic 프로젝트 형식
- C++ 디버그 구성에 대한 프로젝트 설정
- .NET C# 디버그 구성에 대한 프로젝트 설정
- C# 디버그 구성에 대한 프로젝트 설정
- Visual Basic 디버그 구성에 대한 프로젝트 설정
- 디버거 보안