C # 다중 스레드 프로그래밍에서 메서드 A()
가 B()
새 스레드에서 메서드를 호출 할 때 , 예를 들어 다음과 같은 것을 사용합니다.
Task A()
{
// ...
// I want B to run in parallel, without A() waiting for it.
Task.Factory.StartNew(B);
}
void B()
{
// I attach a debugger here to look at the Call Stack.
// But that is empty and I can't see that A() actually called it (logically).
// Also Environment.StackTrace is pretty much empty of that path.
}
즉, 메서드 내 B()
에서 스택 추적은 메서드 A()
실행을 트리거 한 메서드 호출 경로에 대해 아무것도 알지 못합니다 B()
.
전체 논리적 스택 추적 을 볼 수있는 방법이 있습니까? 예를 들어 예외가 발생한 경우 실제로 B()
알고있는 전체 스토리를 볼 A()
수 있습니까?
일반적으로 대답은 정의에 No
따라 StackTrace
다른 스택의 정보를 포함 할 수 없기 때문에입니다. 그러나 Visual Studio에서 애플리케이션을 디버깅하는 경우 몇 가지 작업을 수행합니다 (이는 C ++이지만 모든 언어에서 비슷 함).
여기에서 외부 코드는 사용자보다 어둡고 일부 "상위"스레드 정보를 검토 할 수 있습니다. 그러나 일반적으로이 화면은별로 도움이되지 않습니다. Visual Studio vshost.exe
는 가능한 한 많은 디버그 정보를 수집하기 위해 파일을 만듭니다 .
또한 부모에 연결하여 작업을 생성하고 몇 가지 예외가있는 경우 예외의 ToString
메서드로 전체 스택 추적을 얻을 수 있지만 여전히 원하는 것은 아닙니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다