2011-02-03 2 views
6

, 그러나 유머 나 ...비주얼 스튜디오의 스레드 창은 "메인 스레드 '나는 가능성이 뭔가를 분명 실종

가 디버깅에 유용 나는 항상 내 애플 리케이션에서 중요한 스레드의 이름을 좋아/식별 않는 방법 로깅 등. 프로그램 시작시 Thread.CurrentThread.Name을 통해 주 스레드의 이름을 쿼리하면 다시 null이됩니다. 따라서 가장 먼저 일어나는 일은 주 스레드 (및 기타 관련 스레드)가 좋은 의미를 갖도록하는 것입니다 나중에 참조 할 수있는 이름.

오늘까지는 생각 해보지 않았지만 Visual Studio에서 스레드 창을 볼 때 (스레드 이름이 지정되기 전에) ed 등), 'Main Thread'라는 특수 카테고리가 지정되고 'Main Thread'라는 실제 이름을 가진 Psuedo 이름도 할당됩니다.

관리되는 관점에서 .NET은 응용 프로그램의 주 스레드를 식별하는 System.Threading.Thread 또는 System.Diagnostics.ProcessThread에 의미있는 내용을 표시하지 않습니다 (적어도 볼 수 있음). 나는 Windows Process and Thread Functions의 목록을보고, 다시, 나는 명백한 것 (아마 OpenThread?)을 보지 못했습니다.

누군가가 스레드 창에서 특수 범주 "주 스레드"를 할당하는 방법을 알고 있다면 궁금한가요?

답변

5

디버거는 DEBUG_PROCESS 옵션을 사용하여 CreateProcess로 디버깅을 시작합니다. 주 스레드의 핸들은 PROCESS_INFORMATION.hTread에 반환되므로 아무 것도 추측하지 않습니다. 첨부는 조금 까다 롭습니다. 아마도 DebugActiveProcess()로 연결 한 후 첫 번째 CREATE_THREAD_DEBUG_EVENT 알림이 WaitForDebugEvent에서 보게됩니다.

자세히 알아 보려면 MDbg의 source code을 사용하십시오.

+0

아, 그건 의미가 있습니다. 정보 주셔서 감사합니다. SourceCode는 확실히 흥미 롭습니다. –

+0

CREATE_THREAD_DEBUG_EVENT 알림은 비동기입니다. 배달 순서가 확실하지 않습니다. 그러나 CreateProcess에 의해 반환 된 정보는 의미가 있습니다. –

관련 문제