架构师_程序员_码农网

사용자 이름 비밀번호 검색
등록하기

QQ登录

시작하기 위한 한 단계

검색
조회:3055|댓글: 1
打印 上一主题 下一主题

[NET/C# 응용 프로그램 크래시 예외로 DMP 덤프 파일 자동 생성 종료

[NET/C# 응용 프로그램이 충돌하고 자동으로 DMP 덤프 파일을 생성하면서 종료됩니다 .]
NET/C#
바로 가기 跳转到指定楼层
owner
게시됨 2022-11-6 22:41:42| 해당 작성자만 보기回帖奖励| 역방향찾아보기| 읽기 모드
NET / C # 응용 프로그램 개발, 개발자의 코드 로직과 관련이있을 수 있지만 사용자의 운영 환경과 관련이있을 수있는 프로그램이 안정적이고 강력하게 실행되도록하는 것은 모든 개발자가 불가능합니다. 즉, 문제없이 응용 프로그램을 개발했다고 100 % 보장 할 수 없으며 문제가 끔찍하지 않으며 문제가 있다는 두려움은 문제의 원인을 찾을 수없고 해결할 수 없다는 것입니다. 문제는 두려워 할 것이 없습니다.

개발 된 애플리케이션이 예상대로 실행되지 않아 비정상 종료되는 경우 문제 해결을 용이하게하기 위해 DMP 덤프 파일을 자동으로 생성하는 방법은 무엇입니까?
덤프는 애플리케이션이 생성된 시점의 프로세스 스냅샷이 포함된 파일로, 애플리케이션의 상태를 확인하는 데 사용할 수 있습니다. 프로덕션 환경이나 CI 환경과 같이 .NET 애플리케이션에 디버거를 연결하기 어려운 경우 덤프를 사용하여 애플리케이션을 디버깅할 수 있습니다. 덤프를 사용하면 문제가 있는 프로세스의 상태를 캡처하여 애플리케이션을 중지하지 않고도 상태를 직접 확인할 수 있습니다.

덤프 수집

환경 변수를 사용하여 장애 발생 시 덤프를 수집하도록 애플리케이션을 구성할 수 있습니다. 이는 장애의 원인을 파악하려는 경우에 유용할 수 있습니다. 예를 들어 예외가 발생할 때 덤프를 캡처하면 애플리케이션이 실패할 때 애플리케이션 상태를 확인하여 문제를 파악하는 데 도움이 될 수 있습니다.

다음 표는 장애 발생 시 덤프를 수집하도록 애플리케이션을 구성하는 데 사용할 수 있는 환경 변수를 보여줍니다.

환경 변수
설명
기본값
COMPlus_DbgEnableMiniDump 또는 DOTNET_DbgEnableMiniDump 1로 설정하면 코어 덤프 생성이 활성화됩니다. 0
COMPlus_DbgMiniDumpType 또는 DOTNET_DbgMiniDumpType 수집할 덤프 유형입니다. 자세한 내용은 다음 표를 참조하세요. 2(미니덤프위드프라이빗읽기쓰기메모리)
COMPlus_DbgMiniDumpName 또는 DOTNET_DbgMiniDumpName 덤프를 작성할 파일 경로입니다. 닷넷 프로세스를 실행하는 사용자에게 지정된 디렉터리에 대한 쓰기 권한이 있는지 확인합니다. /tmp/coredump.
COMPlus_CreateDumpDiagnostics 또는 DOTNET_CreateDumpDiagnostics. 1로 설정하면 덤프 프로세스의 진단 로깅이 활성화됩니다. 0
COMPlus_EnableCrashReport 또는 DOTNET_EnableCrashReport (.NET 6 이상 필요) 1로 설정하면 런타임에 실패한 애플리케이션의 스레드 및 스택 프레임에 대한 정보를 포함하는 JSON 형식의 크래시 보고서가 생성됩니다. 오류 보고서 이름은 덤프 경로/이름에 .crashreport.json이 추가됩니다.
COMPlus_CreateDumpVerboseDiagnostics 또는 DOTNET_CreateDumpVerboseDiagnostics (.NET 7 이상 필요) 1로 설정하면 덤프된 프로세스에 대한 자세한 진단 로깅을 활성화합니다. 0
COMPlus_CreateDumpLogToFile 또는 DOTNET_CreateDumpLogToFile (.NET 7 이상 필요)은 진단 메시지의 파일 경로에 기록해야 합니다. 설정하지 않으면 진단 메시지가 실패한 애플리케이션의 콘솔에 기록됩니다.

이러한 환경 변수의 경우 .NET 7에서는 COMPlus_ 대신 접두사 DOTNET_를 표준화합니다. 그러나 COMPlus_ 접두사는 계속 정상적으로 작동합니다. 이전 버전의 .NET 런타임을 사용하는 경우 환경 변수에 여전히 COMPlus_ 접두사를 사용해야 합니다.



새 .NET Core 6 애플리케이션 테스트

VS 2022를 사용하여 새 .NET Core 6 애플리케이션 테스트를 생성하여 다음 코드로 테스트합니다:

아래와 같이 cmd 명령을 사용하여 애플리케이션을 시작합니다:

COMPlus_EnableCrashReport=1
COMPlus_DbgEnableMiniDump=1
COMPlus_DbgMiniDumpName="C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp"
COMPlus_CreateDumpDiagnostics=1
처리되지 않은 예외. system.Exception: itsvse.com
예외: Program.<Main>$(String[] args)의 C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:줄 9에 있는 itsvse.com
[createdump] C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp 파일에 힙을 사용하여 미니덤프 쓰기 중
[createdump] 덤프가 성공적으로 작성되었습니다.



프로그램이 비정상적으로 충돌한 후 지정한 디렉토리에 덤프 .dmp 파일을 성공적으로 생성한 것을 볼 수 있지만, 이를 분석하는 방법은 다른 문제입니다.

Windows 플랫폼 일반 설정

Windows에서는 애플리케이션이 충돌할 때 덤프를 생성하도록 WER(Windows 오류 보고)을 구성할 수 있습니다.

이는 C++, Go 등과 같은 .NET 프로그램뿐만 아니라 모든 프로그램에서 작동하며 .NET 및 .NET Core 버전과 무관합니다!

  • regedit.exe를 엽니다 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows 오류 보고\LocalDumps 디렉터리를 엽니다 덤프 폴더 유형 REG_EXPAND_SZ를 생성하여 다음을 구성합니다.

  • 디렉터리를 구성하거나, REG_DWORD 타입의 KEY DumpCount를 생성하여 총 덤프 개수를 구성합니다.




물론 PowerShell 명령을 사용하여 구성할 수 있습니다:

위에서 구성한 대로 프로그램이 예외와 함께 종료되면 %LOCALAPPDATA%\CrashDumps 디렉터리에 프로그램 덤프가 생성됩니다.

참조:

h ttps:// learn.microsoft.com/zh-cn/dotnet/core/diagnostics/dumps
h ttps:// www.cnblogs.com/InCerry/p/how_to_automic_create_dump_when_app_crash.html
h ttps:// learn.microsoft.com/zh-cn/troubleshoot/developer/webapps/aspnetcore/practice-troubleshoot-linux/lab-1-3-capture-core-crash -dumps




이전: Discuz 액세서리 이미지, 아바타 이미지, 앨범, 사진, 저장소 규칙 설명
다음: BundleTransformer를 사용하여 System.Web 대체하기.
NET을 사용하여 두 컬렉션을 비교하는 방법은 실습 과정에서 기술적 어려움이 발생했을 때만 게시되었으므로 다른 사람을 오도하지 마세요.
소파
소유자|2022-11-6 22:44:06에 게시 됨|이 작성자만보기
덤프 파일을 전송합니다:

프로그램이 시작되면 디렉터리에 생성된 덤프 파일이 있는지 확인하고, 있는 경우 지정된 인터페이스에 파일을 제출한 다음 파일을 삭제합니다.
코드 파머 네트워크는 연습 과정에서만 공개되었으며, 다른 사람을 오도하는 것이 아니라 기술적 어려움이 발생했습니다.
로그인해야 다시 게시할 수 있습니다 로그인하기 | 등록하기

이 버전의 통합 규칙 댓글 달기


면책 조항: 코드 파머 네트워크에서 제공하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 제한되며, 위의 내용을 상업적 또는 불법적인 목적으로 사용해서는 안 되며, 그렇지 않을 경우 모든 결과는 사용자의 책임입니다. 코드파머 네트워크의 사이트 정보, 저작권 분쟁은 본 사이트와 무관합니다. 다운로드 후 24시간 이내에 컴퓨터에서 위의 콘텐츠를 완전히 삭제해야 합니다. 프로그램이 마음에 들면 정품 소프트웨어를 지원하고 등록을 구매하여 더 나은 정품 서비스를 받으십시오. 침해가 있는 경우 이메일로 연락하여 처리해 주시기 바랍니다.

메일 To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|사이트맵

GMT+8, 2024-9-19 05:17

빠른 답글맨 위로 돌아가기목록으로 돌아가기