트러블슈팅(troubleshooting)

이번에 내부에서 특정 PC만 프로그램이 오동작 하는 버그가 생겼습니다.

해당 이슈를 분석하고 해결해 나가는 과정을 공유 할까 합니다.

  1. 증상 확인
    우선 가장 중요한 건 재연되는 PC가 있는지 여부 입니다.
    만약 없다면 로그 말고는 분석 방법이 없기 때문에 조금 어려워 집니다.

해당 증상은 Release 버전에서 발생되어 디버깅으로는 찾기 힘든 상태 였습니다.

우선 기본적으로 닷넷 버전을 확인 하고


(개발 PC라 좀 많네요…:wink: )

설치된 모듈을 백업한 뒤 재설치해서 확인해 봤지만 증상은 계속 발생 하였습니다.

이번 이슈의 증상은 메모리가 비정상적으로 증가하는 이슈 였습니다.

메모리가 문제 될 때는 gcdump 를 이용 합니다.

작업 관리자나 다른 프로그램에서도 확인 가능 하지만
gcdump의 ps 기능을 통해서 pid를 확인 합니다.

그리고 재연 시나리오 전에 1회 dump를 생성합니다.
image

이후 재연 시나리오에 따라서 문제를 발생 시키고 다시 dump를 생성합니다.
혹시 원인파악이 안될 확률이 있으니 최소 2회 이상 생성합니다.
image

이제 생성 된 dump 를 VS에서 열어 봅니다.

객체가 비정상적으로 생성 된게 확인 되네요.

소스상에서 해당 객체 생성하는 부분과 원인이 될듯한 부분을 파악하여
원인을 찾습니다.

문제 해결.

gcdump 사용 후기를 써보려 했는데 글이 좀 너저분 해졌네요.

이상 gcdump 후기 였습니다.

4 Likes