2011-02-09 2 views
0

이것은 길게 찍었지만 아이디어가 없습니다.외부 생성자 - 문제 해결 단계를 호출 할 때 응용 프로그램이 중단됩니까?

세 프로젝트가있는 VS C# 솔루션이 있습니다. 클래스 라이브러리 프로젝트와 그 클래스 라이브러리에 의존하는 두 개의 응용 프로그램 프로젝트가 있습니다. 클래스 라이브러리는 차례대로 sharpdevelop 프로젝트의 avalonedit dll을 비롯한 몇 가지 다른 DLL에 의존합니다.

하나의 응용 프로그램이 빌드되고 실행되고 있으며 avalonedit 컨트롤을 래핑하는 자체 컨트롤을 사용하고 있습니다. 다른 응용 프로그램이 실행되지 않고 avalonedit 컨트롤이 래핑 컨트롤의 XAML을 통해 초기화 될 때 실패하는 것으로 보입니다.

문제는 디버그 출력에 오류가 전혀 표시되지 않는다는 것입니다. 모든 메시지가로드 된 dll이고 아무것도 표시되지 않습니다. 내 컨트롤의 생성자로 들어가면 단계가 완료되지 않습니다. 디버거는 응용 프로그램이 실행 중이라고 말합니다. 그러나 기본 편집 컨트롤이 XAML 측에 의해 구성되면 avalonedit dll의 어딘가에 분명히 돌아가고 있습니다.

나는 두 프로젝트 사이의 환경의 차이에 대해 약간의 문제가 있다고 가정해야하지만 문제를 추적하는 방법에 관해서는 다소 난처한 입장입니다. 어떻게 든 문제를 정리해야 avalonedit 소스에 휴식을 취할 수 있습니까?

편집 : 내가 일시 중지/모두 중단하면 내 컨트롤 생성자를 호출하는 행으로 다시 떨어집니다.

+0

중단 중에 디버거를 일시 중지하면 어떻게됩니까? – SLaks

+0

[Reflector] (http://www.red-gate.com/products/dotnet-development/reflector/)가 유용합니다! – Mayank

+1

AvalonEdit 소스 (및/또는 PDB)를 선택하고 디버거에서 일시 중지를 눌러 문제를 확인하십시오. 또 다른 접근법은 Reflector (Mayank 제안)를 사용하여 루프의 잠재적 원인을 확인하기 위해 avalonedit 생성자 소스를 검사하는 것입니다. – VinayC

답변

1

교착 상태와 비슷합니다. 모든 스레드, 스택 추적 및 동기화 프리미티브 (잠금, 세마포어 등)를 자세히 살펴보십시오. 명심하십시오 : 경합 리소스는 명시 적이 지 않을 수도 있습니다 (예를 들어, 정적 생성자 내부에서 교착 상태가 발생하는 유형의 정적 필드에 대한 액세스를 시도하는 것을 기다리는 경우).

교착 상태를 도입하는 데는 여러 가지 방법이 있지만이를 처리하기위한 간단한 조언은 없습니다. 또한 Visual Studio (Debug -> Exceptions ... 및 CLR Exceptions 체크)에서 모든 예외를 중단 할 수 있습니다.

여기가 스택 추적을 제공하는 데 도움이되지 않으면 누군가가 문제를 발견 할 수 있습니다.