2010-12-27 6 views
4

내 프로젝트를 DLL 파일에 늦게 바인딩하고 DLL 메서드 호출시 예외가 발생합니다. 이 방법은 다른 프로젝트에서도 사용되며 (즉, DLL에 대한 초기 바인딩) 아름답게 작동합니다..NET에서 외부 DLL 디버깅

이 새로운 프로젝트의 메소드 내에서 코드를 디버그하여 잘못된 것이 있는지 방법이 있습니까?

이 DLL을 만들었고 분명히 모든 소스 코드를 가지고 있습니다.

두 DLL 파일 모두 Visual Basic 2003 및 .NET 1.1을 사용하여 코딩됩니다.

답변

4

네이티브 DLL이 C++로 작성되었다고 추측합니다. .NET 호스트는 C#으로 작성되었으며 사용자가 정보를 제공하지 않았기 때문에 Visual Studio를 사용했습니다.

이 경우 Visual Studio에서 DLL 프로젝트를 열고 디버그 메뉴의 Attach to Process 작업을 사용하여 호스트 응용 프로그램의 이미 실행중인 인스턴스를 디버깅 할 수 있습니다. 또는 DLL 프로젝트에서 실행할 때 start the app까지 프로젝트를 설정할 수 있습니다.

.NET 호스트 응용 프로그램에서 디버깅을 시작한 경우에도 중단 점을 건너 뛸 수 있다고 생각합니다.

+0

정보가 부족하여 죄송합니다. 이미 질문을 업데이트했습니다. 언어는 모두 DLL을위한 VB.NET입니다. NET 1.1을 사용하고 있습니다. – PedroC88

+0

@ PedroC88 당신의 대답은 3 번이나 끝났다고 생각합니다! –

+0

예, 방금 당신을 위해 명확히했습니다, 감사합니다 :) – PedroC88

2

F5을 누르면 DLL을 디버깅 할 수 있습니다. EXE 파일을 묻는 메시지가 표시됩니다. 실행 파일을 찾아보고 디버깅을 시작할 수 있습니다.

DLL 파일이 다른 라이브러리 또는 DLL 파일을 사용하는 경우 모든 종속성을 찾을 수있는 경로에 있어야합니다. 어쩌면 DLL 파일과 함께 모든 종속성을 복사하지 않았을 수도 있습니다.

1

사용 가능한로드 된 DLL에 대한 디버그 기호 (.pdb 파일)가 실행중인 프로세스에있는 경우 해당 DLL에 대한 프로젝트를 열고 실행중인 프로세스 (디버그 -> 프로세스에 연결)에 연결할 수 있습니다.

+0

이 과정에서 나를 더 자세하게 안내해 줄 수 있습니까? – PedroC88

+0

@ PedroC88 : 귀하의 프로젝트가 어떻게 준비되고 구축되는지에 달려 있습니다. 이 외부 DLL은 실행중인 응용 프로그램과 함께 솔루션에 포함 된 프로젝트입니까? 아니면 그냥 참조되는 DLL입니까? 후자의 경우 코드 내의 중단 점을 맞추기 위해 응용 프로그램의 참조에 DLL의 "디버그 빌드"가 필요합니다 (PDB 파일 포함). – David

+0

지금은 바인딩을 늦게하는 DLL을 디버깅하려고합니다 ... (리플렉션을 사용하여 객체의 인스턴스를 만듭니다). 개체 내부의 매개 변수없는 메서드는 예외를 던지고 있지만 다른 exe에서 호출 된이 메서드는 throw하지 않습니다. 이 externall DLL을 내 exe에서 디버그하여 잘못된 내용을 확인하려고합니다. DLL의 소스 코드가 있는데 둘 다 VB 및 .NET 1.1로 작성되었습니다. – PedroC88

관련 문제