Programing

원격 .NET 디버거가 연결될 때까지 기다리는 방법

crosscheck 2020. 12. 11. 07:50
반응형

원격 .NET 디버거가 연결될 때까지 기다리는 방법


오늘 저는 프로그램을 원격 디버깅해야하는 문제에 직면했습니다. 이 프로그램은 다른 시스템에서 시작되었으므로 명령 줄에서이 프로그램과 상호 작용할 기회가 없습니다. 그래도 소스를 쉽게 변경할 수 있습니다.

내가해야 할 일은 프로그램이 정상적으로 시작되고 디버거로 연결될 때까지 기다리는 것이 었습니다. 저를 행복하게 만드는 방법을 찾을 수 없었습니다. 버그를 찾았지만 디버거의 도움이 없었습니다.

while(true) { }

프로세스를 유지하고 디버거로 "다음 문장을 설정"할 수 있었지만 어색하고 무례 해 보였습니다.

Console.ReadLine();

언론에 나를 위해 실제로 콘솔이없는 때부터 입력하는 이상한 듯 입력 에. (도 작동하지 않았습니다. 다음 문을 설정하고 실행하면 ReadLine () 대기 상태로 돌아갑니다.)

그렇다면 "디버거로 연결할 수있을 때까지 여기에서 기다리십시오"라는 .NET / CLR / C # 프로그램에 어떤 종류의 코드를 삽입 할 수 있습니까?


System.Diagnostics.Debugger.IsAttached 속성을 사용하여 디버거가 프로세스에 연결되어 있는지 확인할 수 있습니다 . 이 애플리케이션은 디버거가 연결될 때까지 대기합니다.

using System;
using System.Diagnostics;
using System.Threading;

namespace DebugApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Waiting for debugger to attach");
            while (!Debugger.IsAttached)
            {
                Thread.Sleep(100);
            }
            Console.WriteLine("Debugger attached");
        }
    }
}

이것은 정확히 필요한 것 같습니다.

Debugger.Launch();

http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.launch.aspx

"디버거를 시작하고 프로세스에 연결합니다."


나는 그것을 시도한 적이 없기 때문에 모르겠지만 System.Diagnostics.Debugger.Break()중단 점에 도달하고 디버거가 연결될 때까지 기다리기 위해 사용할 수 있는지 궁금합니다 . 원격 디버거가 작동 할 것이라고 가정하지만 확실하게 알 수 없으며 현재 쉽게 조롱하고 이론을 테스트 할 수있는 가정 환경에 액세스 할 수 없습니다. ASP.Net 응용 프로그램에서 사용하는 방법에 대해 설명 하는 MSDN 기사가 있으므로 작동 할 것이라고 생각합니다.


원격 디버거 연결은 로컬 디버거를 사용하는 것과 똑같이 작동합니다.

먼저 평소대로하십시오.

System.Diagnostics.Debugger.Launch();

디버거를 선택하라는 메시지가 표시됩니다. 이 시점에서 실행이 일시 중단되므로 원격 디버거를 연결하고 프롬프트에서 "아니오"를 선택할 수 있습니다.


Debug.Assert(true);

내가 생각하기에 작동해야합니다. 그건 그렇고, 나는 또한 때때로이 문제에 직면하고 있습니다.

MessageBox.Show() 

: P : P


디버거를 연결할 시간을 제공하는 시간 제한을 설정하십시오.

Thread.Sleep(30000);

참고 URL : https://stackoverflow.com/questions/361077/how-to-wait-until-remote-net-debugger-attached

반응형