본문 바로가기

debug4

MiniDump 제작 제품 개발중에도 출시후에도 항상 나타나는 버그. 오늘도 버그를 잡기위해 하루종일 삽질을 한다. ㅋㅋ 물론 정말 머리가 뛰어나 천재적인 두뇌로 머리속에서 완벽한 설계를 하고 바로 코딩에 옮겨 전혀 버그없는 프로그램을 만드는게 목표이긴 하지만, 그건 정말 .. 천재라도 할 수 있을까? ㅎㅎ 예전부터 프로그램이 비정상적으로 종료가 될때 해당 정보를 저장하여 분석할 수 있으면 좋겠다라는 생각을 많이 했지만, 생각뿐이었었다. 오늘도 열씨미 개발하며 테스트를 하는데 중간에 뻣어버리는 프로그램 -_- 당최 어디서 죽는지 찾질못해 헤매는 도중 Devpia에서 Dump 제작하는 팁을 찾았다~ 내용을 보니 바로 내가 찾던것~ㅎㅎㅎㅎㅎㅎ 아무생각 없이 길가다가 만원짜리 주운 심정이라고나 할까? ㅋ 아무튼 설명도 잘되있고 친.. 2008. 12. 5.
ASSERT_VALID, AssertValid, Dump ASSERT_VALID, AssertValid, Dump에 대해서 알아보자. 별로 쓸 일이 있을까 싶지만, 원도우 프로그램을 하면서 무심코 가장 많이 접하는 함수 중에 하나였을 것이다.(이 함수를 처음 본다는 사람은 그냥 무심결에 넘어가서 그렇지, 그렇지 않다면 좀 문제가 있을 것 같다.) 예를 들어 원도우 프로그램을 하나 자동으로 생성하면, 일반적으로 CXXXApp, CXXXView, CXXXDoc, CMainFrame 등의 class가 자동으로 만들어진다. 이때 CXXXApp를 제외한 아무 class나(여기서는 CXXXView)를 열어보면 CXXXView.h에는 #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext.. 2008. 6. 18.
assert 사용하기 뭐 아는 사람이라는 다 아는 assert 사용하기 들어가기 전에 먼저 assert 에 대해 설명하지면 디버깅 매크로로 assert(조건문) 이 참이 아닌값 즉 거짓이 되면 중간에 아래 그림과 같은 대화 상자를 띄우면서 어느 몇번째 라인에서 에러가 낳는지 알려줍니다. 왜 이런 귀찮은 짓을 하냐 ?? 소스를 가볍게 하면서도 에러를 쉽게 잡아내기 위해서죠 여기서 에러란 컴파일 에러가 아닌 런타임 에러 입니다. 귀찮은 설명은 다른 곳을 참고 하시거나.. 아니면 MS 사에서 나온 MSDN 이나 Writing solid code 란 책을 참고하시길 우선 assert.h 를 include 하시고 원하시는 부분에 assert(조건문) 을 날리시면 됩니다. assert(pvTo != NULL && pvFrom != NU.. 2008. 5. 27.
Debug in C# : using #if & conditional attribute C++을 사용하시는 분들은 VC계열에서 전처리자을 이용하는 방법에 대해서 익숙하신 분들이 많으실겁니다. 특히 전처리자, #define, #if ~ #endif등을 이용해서 디버그할때만 필요한 코드를 릴리즈할때 무시하도록 하는 일은 한번쯤은 해보셨지 않았나 싶습니다. C#으로 넘어오면서 네임스페이스등의 개념이 본격적으로 사용되고 전처리자를 잘 사용하지 않게 되었습니다. 하지만 코드를 짜다보니 여전히 디버그용으로 만든 코드가 릴리즈에 포함되지 않게 하는일이 필요하더군요. 그래서 어떻게 쓸수있지 않을까 고민하던 중에 다음과 같은방법을 발견했습니다. using System; using System.Diagnostics; class Program { static void Main(string[] args) { #.. 2008. 5. 26.