런타임에 예외를 잡은 스레드의 스택 추적을 인쇄 할 수 있습니다. 또한 동일한 프로세스 내에서 실행되는 다른 스레드 추적을 인쇄해야합니다. 한 스레드에서 예외가 잡히자 마자 모든 스레드를 정지시키는 좋은 방법을 찾는데 관심이 있습니다.하나의 스레드가 예외를 만났을 때 모든 스레드를 멈출 수 있습니까?
지금 내가 할 수있는 것은 각각의 활성 스레드에 대한 쿼리와 SuspendThread()입니다. 그러나 이로 인해 초기 예외가 잡히면 각 스레드가 조금 더 오래 실행됩니다. 즉각적으로 모든 스레드를 일시 중단시키는 방법이 있습니까?
감사합니다.
충돌 보고서로 프로세스를 종료 하시겠습니까? 다른 스레드로 보내는 신호의 종류는 시간이 걸릴 것입니다. 나는 진짜 질문이 당신의 목적을위한 것이라고 생각합니다. 즉각적인 것으로 자격을 얻는 것과 어떻게 그 신호를 빨리 얻을 수 있습니까? –
OS에 대해서조차도 "즉각적"이라고 생각하지 않습니다 ... 예를 들어, 멀티 코어/멀티 프로세서 시스템에서 코어 # 1의 스레드가 충돌했을 때 코어 # 2가 스레드를 중지하는 것을 어떻게 알 수 있습니까? 코어 # 1은 "의심스러운 스레드"메시지를 코어 # 2로 보내야합니다.이 때 코어 # 2의 스레드가 이미 더 많은 명령어를 실행했을 것입니다. –
응용 프로그램의 구조에 따라 스레드 대신 파이버를 사용할 수 있습니다. (물론 릴리스 버전에서는이 작업을 원하지 않지만 디버깅에는 문제가 없을 수 있습니다.) –