2014-08-28 1 views
3

우리는 최근에 우리 엔진에서 끝없는 루프를 만나기 시작했고 효과적으로 싸울 수있는 방법을 모릅니다. 앱은 영원을 위해 간단히 얼어 붙어서 진행되는 것을 이해하기 위해 실행을 중단 할 수 없습니다. 주요 장소에 일반 중단 점을 배치하면 (업데이트 루프) 아무런 효과가 없습니다. 나는 문제가 지속적으로 실행되는 루프 somwhere에 있음을 거의 확신하지만, 코드의 크기로 인해 나는 그것을 찾는 곳을 추측하기조차 할 수 없다.Visual Studio에 "현재 위치에서 휴식"기능이 있습니까?

그래서, 내 질문은 어떻게하면 응용 프로그램의 실행을 코드에서 임의의 위치에있는 Visual Studio에서 중단 할 것인가? "당신이있는 곳에 머물러있는"것과 비슷한 것. 이론적으로 가능합니까?

+4

일시 중지 버튼을 사용해 보셨습니까? 왼쪽의 두 번째 버튼, 두 번째 줄 http://www.kipirvine.com/asm/debug/vstudio2010/S5.gif – sisve

+0

오, 이제 나는이 질문에 부끄럽다. :) 그러나 한 가지 이유로 나는 중단 점에 대한 MSDN 기사를 진심으로 읽었으며 묻기 전에 많이 봤습니다. :) 당신이 aswer로 이것을 게시하고 싶다면 나는 그것을 받아 들일 것입니다. – cubrman

답변

5

물론 Debug + Break All을 사용하십시오.

물론 이것은 반드시 프로그램의 문장 중 하나와 일치하는 멋진 주소에서 프로그램을 중단시키지 않습니다. 중단 점을 설정해도 중단이 발생하지 않을 가능성이 높습니다. 디버거에서 소스 코드를 표시 할 수 없다는 알림을 볼 수 있습니다. 그렇지 않으면 올바른 스레드를 선택하지 않았을 수 있습니다.

먼저 디버그 + Windows + 스레드를 사용하여 올바른 스레드가 선택되었는지 확인하십시오. 디버깅 할 파일을 두 번 클릭합니다. 다음으로 할 일은 Debug + WIndows + Call Stack 창을 살펴 보는 것입니다. 그것은 최소한 당신의 방법 중 일부를 보여 주어야합니다. 결코 결코 땅에 가지 않았 음을 암시 할 수 있습니다.

그리고 네이티브 코드 또는 운영 체제 호출에서 교착 상태가 발생하지는 않습니다. 이를 확인하려면 관리되지 않는 디버깅을 활성화해야합니다. 프로젝트 + 속성, 디버깅, "네이티브 코드 디버깅 사용"을 선택하십시오. 심볼 서버를 사용하도록 설정했는지 확인하여 운영 체제 DLL에 대한 디버깅 정보를 얻으십시오. 도구 + 옵션, 디버깅, 기호.