충돌 보고서

스테이션이 예기치 않게 닫힐 때 무엇을 남기는지, 무엇을 보내고 언제 묻는지, 그리고 개발 빌드가 담고 있는 두 디버그 명령입니다.

Markdown으로 보기

충돌 보고서는 설정 페이지 진단 묶음의 유일한 줄입니다. 앱이 내려가는 도중에 충돌이 전송되는 일은 결코 없습니다. 파일로 붙잡아 두었다가 다음 시작이 그것을 보내거나 보여 주고 묻습니다. 이 구역은 어느 쪽인지 정하는 스위치 하나를 담습니다. 이 페이지에는 설정 변경 권한이 필요합니다.

충돌 보고서를 자동으로 보내기

항목 무엇인지 값과 기본값 효과
충돌 보고서를 자동으로 보내기 "앱이 충돌하면 다음 시작 때 묻지 않고 보고서를 보냅니다. 꺼져 있으면 보고서를 먼저 보여주고 물어봅니다." 켬 또는 끔입니다. 기본값은 꺼짐입니다. 켜면 다음 시작이 붙잡아 둔 보고서를 조용히 보내고, 서버가 받아들이면 그것을 지웁니다. 끄면 다음에 눈에 보이는 시작이 동의 대화 상자를 엽니다.

런타임이 정지한 동안에는 이 페이지가 아예 그려지지 않습니다(설정 참조). 같은 동의는 동의 대화 상자 안에서도 "충돌 보고서를 항상 자동으로 보내기" 체크 상자로 나오고, 거기에서 체크하면 이 스위치가 켜집니다. 스위치 아래에서 카드는 이렇게 말합니다. "결함을 알리거나 개선을 제안하거나 드라이버를 요청하려면 계정 페이지를 사용하십시오." 그 서식이 제보이며, Ganter 계정으로 보내기 때문입니다.

보고서에 담기는 것

처리되지 않은 오류가 앱을 내리면 전역 처리기가 스테이션 데이터 뿌리 아래에 crash\pending-crash.json 파일 하나를 적고 가장 최근 충돌만 지킵니다. 그 안에는 이런 것이 들어 있습니다.

  • 앱 버전과 Windows 버전,
  • 오류를 어디에서 붙잡았는지(Dispatcher, AppDomain, TaskScheduler, 또는 끝나지 못한 부팅이면 Startup),
  • 예외의 형식과 메시지와 안쪽 예외까지 포함한 전체 스택 글,
  • 가장 최근 로그 파일의 마지막 60줄이며, 고장에 이르는 앞뒤 사정입니다,
  • 그것이 일어난 순간입니다.

적히기 전에 Windows 사용자 이름과 프로필 경로는 나오는 자리마다 <user><userprofile>로 바뀝니다. 그 지우기는 안전망이지 보증이 아닙니다. 자유롭게 적힌 로그 줄에는 다른 이름이 담길 수 있고, 그래서 대화 상자가 무엇이 나가기 전에 전체 내용을 보여 줍니다.

스위치가 꺼져 있으면 충돌 뒤 처음으로 눈에 보이는 시작이 셸 위에 충돌 보고서를 보낼까요?를 엽니다. "Ganter Lab이 지난번에 예기치 않게 닫혔습니다. 이 보고서를 보내 주시면 문제를 고치는 데 도움이 됩니다. 오류와 최근 로그의 짧은 토막이 담겨 있습니다. 보내기 전에 아래에서 확인하십시오." 충돌 상세 상자가 보낼 내용을 그대로 보여 주고, 복사 단추가 같은 글을 클립보드에 올리므로(잠깐 "복사됨"으로 바뀝니다) 그것을 찾아보거나 지원팀에 건넬 수 있습니다. 클립보드가 받아들이지 않으면 단추가 "복사하지 못했습니다"로 바뀝니다. 일어나지 않은 복사를 일어난 것으로 오해하지 않게 하려는 것이며, 본문은 화면에 그대로 남아 있어 손으로 선택할 수 있습니다.

명령 하는 일 흐려지는 때(상황) 그려지지 않는 때(역할)
충돌 보고서를 항상 자동으로 보내기(체크 상자) 이 보고서를 보내든 아니든 대화 상자가 닫힐 때 위의 스위치를 켭니다. 런타임이 정지한 동안(도구 설명은 "런타임 정지"). 이 대화 상자는 셸의 것이므로 이 페이지가 그려지지 않을 때에도 그려집니다. 결코 없습니다.
보내지 않기 이 보고서를 버리고 파일을 지웁니다. 이 보고서에 대해 다시 묻지 않습니다. 결코 없습니다. 결코 없습니다.
보고서 보내기 보냅니다. 성공하면 "충돌 보고서를 보냈습니다"라는 알림이, 서버에 닿지 못했으면 이유와 함께 "충돌 보고서를 보내지 못했습니다"가 나옵니다. 후자의 경우 파일이 남으므로 지금 보내거나 다음 시작에 다시 묻습니다. 결코 없습니다. 결코 없습니다.

알림 영역에 감춰진 시작(Windows 시작 시 실행이나 --tray 실행)은 대화 상자를 보여 주지 않습니다. 보고서는 다음에 눈에 보이는 시작을 기다립니다. 스위치가 켜져 있으면 전송이 대화 상자 없이 배경에서 일어나고, 네트워크가 없던 스테이션은 파일을 지키고 다음 시작에 다시 시도합니다.

보고서는 Ganter 서버의 제보 엔드포인트로 갑니다. 계정 페이지에 로그인한 Ganter 계정이 있으면 그 계정의 것으로 적히고, 없으면 계정 없이 받아들여집니다. 그 밖에는 아무것도 스테이션을 떠나지 않습니다. 사용 현황 원격 측정은 없습니다.

디버그 명령

앱의 개발 빌드는 스위치 아래에 단추 두 개를 답니다. 설치된 릴리스에는 둘 다 없습니다.

명령 하는 일 흐려지는 때(상황) 그려지지 않는 때(역할)
충돌 흉내 내기(디버그) UI 스레드에서 처리되지 않은 오류를 던져, 붙잡는 경로가 진짜 충돌 파일을 적고 다음 시작이 동의 흐름을 실제로 돌게 합니다. 결코 없습니다. 릴리스 빌드에는 없습니다.
화면 캡처(디버그) 에이전트의 UI 도구가 쓰는 것과 같은 화면 캡처를 프로세스 안에서 돌리고 단추 아래에 결과를 적습니다. "저장함: <path>" 또는 "캡처에 실패했습니다: <reason>"입니다. 창이 없는 호스트에서는 캡처를 쓸 수 없다고 결과가 말합니다. 결코 없습니다. 릴리스 빌드에는 없습니다.

이 구역이 하지 않는 일

여기에 로그를 보는 곳은 없습니다. 진단 로그는 이벤트의 콘솔 탭에 상세 수집과 지원 패키지와 함께 있습니다. 결함 신고와 요청은 제보에 있습니다. 충돌 파일은 앱에서 고칠 수 없고, 앱은 스위치나 대화 상자의 보내기 없이 결코 아무것도 보내지 않습니다.