2017-09-03 5 views
1

컨텍스트 :내 코드가 괜찮음을 증명하는 충분한 정보를 호출 스택에있는 외부 코드입니까?

MEF를 사용하는 호스트 응용 프로그램에서 실행되는 WPF 응용 프로그램이 있습니다. 이 호스트 응용 프로그램은 내가 일하는 다른 부서에서 개발했으며 우리가 제공하는 모든 것은 우리가 사용하는 어셈블리와 C# 인터페이스입니다. 내 WPF 응용 프로그램에는 호스트 응용 프로그램으로 내 보낸 부트 스트 래퍼가 있습니다.

문제 :

나는 데 되풀이 문제는 내가 어떤 버튼을 클릭하면 이벤트에 내 이벤트 핸들러 중 하나를 실행할 때 WPF 응용 프로그램의 UI 요소를 모두 사라질 것입니다. 그래서 자연스럽게 핸들러 중 하나의 첫 번째 줄에 중단 점을 넣고 디버그합니다. 하지만 호출 스택에서 볼 수있는 것은 내 라인 (중단 점을 배치 한 곳)이며 나머지 호출 스택에는 외부 코드가 있습니다. 그래서 이것이 호스트 어플리케이션이나 내가 소개 한 것의 문제인지 알아 내려고합니다. 호출 스택에는 PresentationCore, WindowsBase, mscorlib 및 호스트 어셈블리에 대한 호출이 하나 뿐인 Native-to-Managed 및 Managed-to-Native 행이 있습니다.

질문 : 나에게 문제가 호스트에 말을 호출 스택은 상단에 내 하나의 중단 점 라인을 가지고 있으며, 나머지는 호스트 어셈블리 또는 Windows 조립되는 것을보고

이 충분하다 어셈블리? Windows 어셈블리가 아니라고 가정합니다. 내 브레이크 포인트에 도달하기 전에 UI 요소가 사라집니다.

답변

1

내가보기에 중단 점을 배치 한 곳은 내 줄이고 나머지는 호출 코드 스택에있는 외부 코드입니다.

정확히 콜백에서 발생하는 것으로 가정합니다. 즉, 코드가 호출 코드를 호출하는 바로 아래에있는 프레임 워크 코드와 함께 맨 위에 있습니다.

문제가 호스트 어셈블리에 있다고 말하는 것은 충분한가요? 두 가지 이유

아니, :

  • 귀하의 코드가 외부 프레임 워크를 사용하기 위해 자신을 부트 스트랩 할 책임이있다. 적절하게 처리하지 못하면 외부 코드의 문제가 보일 수 있습니다. 이상적으로 외부 코드가 이러한 코드를 잡아서 설정에 문제가 있음을 알리면 프레임 워크가 정상적으로 실패하지 않고 예외를 throw하더라도 코드에 문제가 남아 있고
  • 코드가 외부 프레임 워크가 일관성없는 상태에 빠지다. 다시 말하지만 이상적으로는 외부 프레임 워크가이를 감지해야하지만 궁극적 인 수정은 코드에 포함됩니다.

UI 요소 내 중단 점을 맞았다 전에 사라집니다.

UI 요소는 다시 그리기 위해 실행중인 프로그램이 필요합니다. 그래서 중단 점이있는 UI를 디버깅하는 것이 문제가 될 수 있습니다. 코드에 디버그 추적을 추가하고 중단 점없이 실행하면 더 나은 결과를 얻을 수 있습니다.

관련 문제