2010-12-06 6 views
15

처음에는 100 개의 스레드를 발생시키는 응용 프로그램을 상속 받았습니다. 이것은 내 디버깅 수명을 매우 까다롭게 만듭니다. Visual Studio에서 한 스레드를 따라갈 수있는 방법이 있습니까?멀티 스레드 응용 프로그램 디버깅

+0

사용중인 VS의 버전은 무엇입니까? VS 2008/2010에는 스레드에 플래그를 지정할 수있는 기능이 있습니다 - http://msdn.microsoft.com/en-us/library/bb385628(v=VS.90).aspx - 그게 도움이 되었습니까? – InSane

+0

Visual Studio 2010 –

답변

16

Visual Studio (디버그/Windows 메뉴)의 '스레드'창을 사용해 보셨습니까?

당신은 스레드를 동결하고

+0

앞으로 올바른 방법으로 들립니다. :) 그것을 시도하고 당신에게 알려 줄 것입니다. –

+0

이것은 실제로 질문에 대한 적절한 답변입니다. 그러나이 방법의 문제점은 VS가 어떤 작업을 수행 하던지간에 스레드의 타이밍을 변경하기 때문에 몇 가지 문제점을 발견하지 못할 수도 있다는 것입니다. 그 문제를 피할 수있는 방법은 내 대답을 참조하십시오. –

1

가능하면 전환 할 수 있습니다, 내가 디버그 모드에서 당신은 그 방법 3. 당신이 할 수있는, 예를 들어, 훨씬 더 관리 번호, 생성되는 스레드의 수를 제한하는 것이 좋습니다 스레드 간의 상호 작용으로 인해 버그를 진단 할 수 있지만 완전히 눈에 띄지는 않습니다.

0

다중 스레드 프로그램을 디버깅하는 것은 매우 어렵습니다. 디버거가 아무 것도하지 않으면 곧 프로그램의 동작이 완전히 바뀝니다. 또한 "하나의 스레드 만"모든 문제를 찾기 위해 작동하지 않습니다. 문제를 분석하려면 모든 스레드를 중단없이 실행해야합니다.

그래서 VS를 사용하지 않고 디버깅해야합니다. 이것이 실시간 응용 프로그램을 위해 어떻게 수행 될 수 있는지, 내 기사 CodeProject: Debugging multithreaded code in real time을 확인하십시오. 링크를 제공하는 것에 대해 미안하지만 여기에있는 모든 내용을 복사하는 것은 너무 길어질 것입니다.

0

또한 제안은 here에 있으며 내 문제를 해결했습니다.

if you hit a breakpoint, disable it, and then begin stepping you should not stop on a different thread 
관련 문제