.NET Framework 4에서 실행되는 응용 프로그램이 있고 응용 프로그램이 관리되고 비 관리 코드로 실행됩니다. UDP 소켓은 사용자 정의 하드웨어와 통신하기 위해 사용자 정의 통신 스택과 함께 사용됩니다. Visual Studio에서 응용 프로그램을 실행하면 모두 정상적으로 작동하지만 자체적으로 실행하면 종종 멈 춥니 다. Windows XP SP3 및 Windows 7 SP1에서이 동작을 보았습니다. 앱이 멈 추면 대부분의 스레드에서 ntdll.dll에 멈추었 음을 알 수 있습니다. 나는 또 다른 질문 스레드에서 이것이 정상적인 교착 상태가 여전히 내 코드로 인해 발생했다고 들었다.Visual Studio에서 호스팅되는 디버그 응용 프로그램을 실행하고 직접 실행하는 것의 차이점은 무엇입니까?
이 앱에 첨부 할 수 있고 기본 모드에서 일시 중지 할 수 있기 때문에 디버그하기가 매우 어렵습니다. 따라서 디스 어셈블리 만 보입니다. 나는 저를 도울 수있는 힌트를 찾고 있습니다. 그렇다면 F5를 사용하여 Visual Studio에서 실행할 때와 직접 실행할 때 응용 프로그램이 멈출 수있는 원인이 누구에게 있습니까? 관리 코드에서 GC가 다르게 작동한다는 점을 읽었습니다. 차이점은 무엇입니까? 또한 관리되지 않는 코드의 경우 해당 메모리가 다르게 초기화되었습니다. 다시 차이점은 무엇입니까?
도움을 주시면 대단히 감사하겠습니다.
Seb
ntdll.dll에 대한 기호를 다운로드 할 수 있습니까? 이것은 적어도 디버거를 부착 할 때 앱이 멈추는 기능을 알려줄 것입니다. 충분한 심볼을로드하면 호출 스택이 의미있는 것으로 보이기 시작합니다. 아마도 이것은 당신의 문제를 밝힐 수 있습니다. –
그냥 "앱을 스스로 실행"할 때 디버그 빌드 또는 릴리스 빌드를 실행하고 있습니까? – Arnout
디버그 빌드입니다. – Ssebu