본문 바로가기
카테고리 없음

Unity) C# Script 무한 루프(infinite Loop) 탈출방법

by 테샤르 2023. 2. 19.

C# Script 무한 루프(infinite Loop) 탈출방법

기본적으로 무한 루프 동작에 걸리면 꼼짝없이 작업관리자 '작업끝내기'를 통해서 강제적으로 종료했어야 한다.

콜스택을 기반으로 메모리 주소를 변경해서 탈출하는 방법이 있어서 정리하게되었다.

 

환경은 Unity / Visual Studio 이다.

 

using UnityEngine;
public class Quicksand : MonoBehaviour {
   void OnMouseDown()

   {
       while(true)

       {

           // "Mind you, you'll keep sinking forever!!", -- My mom

       }

   }

}
무한 루프 탈출 방법
  1. Visual Studio 열기(아직 열려 있지 않은 경우)
  2. Unity에 연결 (아직 연결되지 않은 경우) 을 클릭합니다.
  3. 모두 중단 (일시 중지 II 기호) 을 클릭합니다.
  4. 호출 스택 , 스레드  직접 실행 창을 엽니다 . (모두 디버그 → Windows → )
  5. Call Stack 을 보고 Threads 창 에서 스레드를 클릭합니다 .
  6. 루프가 있는 스레드를 찾으면 중지합니다. (Call Stack이 도움이 됨)
  7. 직접 실행 창 에서 필요한 명령을 실행하려면 루프가 있는 스레드에 있어야 합니다 .

 

 

반응형

 

 

 

Breakout! How to stop an infinite loop in a Unity C# script : [링크]

 

Breakout! How to stop an infinite loop in a Unity C# script | Unity Blog

Ok if you are really unlucky, you may have a bug that is only reproducible when you compile your scripts with debugging disabled. In this case you have to improvise a bit. If you can look at the code and find a way to provoke a read fault you should be gol

blog.unity.com

 

★☆☆☆☆

 

반응형

댓글