원격 .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
'Programing' 카테고리의 다른 글
$ (window) .height () 대 $ (document) .height (0) | 2020.12.11 |
---|---|
asp.net MVC 4 및 Razor보기에서 경로의 이미지를 표시하는 방법은 무엇입니까? (0) | 2020.12.11 |
C # 개체 유형 비교 (0) | 2020.12.11 |
= *는 무엇을 의미합니까? (0) | 2020.12.11 |
MySQL : INT를 DATETIME으로 변환 (0) | 2020.12.11 |