ToString은 잘 짜야 한다

  • Post author:
  • Post category:
  • Post comments:4 Comments
  • Post last modified:December 12, 2008

증상

Visual Studio 2008에서 디버깅하던 중 갑자기 디버거와 응용 프로그램이 한번에 죽었다. 어라? 비주얼 스튜디오 버그인가? 이렇게 생각하고 다시 디버깅하다 또 죽는다. 세 번째 도전 역시 실패했다. 혹시나 싶어 디버그를 붙이지 않고 응용 프로그램을 돌렸다. 정상이다. 뭔가 본질적인 문제가 있음을 깨닫는다. 출력 창에 뜬 디버거 종료 코드 –2147023895 으로 검색해 보고 다음과 같은 결론을 얻었다.

원인

종료 코드 2147023895 은 스택 오버플로우다. 그러나 스택 오버플로우를 내고 죽은 지점은 별다를 게 없다. 객체가 널인지 아닌지 확인했을 뿐인데 스택 오버플로우라니, 보다 심오한 원인이 있을 것 같다. 또 다시 구글링. 그리고 다시 깨달음을 얻었다.

[비주얼 스튜디오 – 도구 – 옵션 – 디버깅 – 일반 – 속성 확인 및 기타 암시적 함수 호출 사용 – 변수 창의 개체에서 문자열 변호나 함수 호출(C# 및 JavaScript 전용)] 이란 메뉴가 있다. 이야기인 즉, 디버거가 변수의 ToString() 메서드를 자동 호출한다는 것이다. 그러니 ToString()에 버그가 있으면 디버거가 죽게 된다.

해당 디버거 옵션을 제거해 보니 증상이 사라졌다. 즉, 십중팔구 ToString() 구현이 틀린 것이다. 지금은 원인을 찾아서 고치는 중이다.

Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
follow me
  • 결정 한번 전광석화네 https://t.co/nujVeCRdMT
    20 hours ago
  • 싸이월드 법인가 뭔가 화제였는데 이런 게 훨씬 현실적인 접근이다 https://t.co/fSB9LiMYzO
    2 days ago
  • 시장을 좋게 보는 사람을 좋게 볼 근거를 찾고 그렇지 않은 사람은 나쁘게 볼 근거만 열심히 찾네. 그 반대로 해야 얻는 게 있을텐데
    2 days ago
Buy me a coffeeBuy me a coffee
×
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
Latest Posts