본문 바로가기

디버그8

WinDbg에 Symbol이 잘 올라가지 않을 경우 1) 윈도우 심볼 설정하기 kd> .symfix e:\symbols 2) .reload 로 운영체제 심볼 로드하기 kd> .reload 3) lm 명령어로 현재 로드 되어있는 심볼 상태 확인 kd> lm 4) .reload /i 옵션으로 심볼 올리기 WinDbg가 TimeStamp 등을 체크하여 symbol mismatch 에러로 심볼로드를 하지 않는 경우를 많이 경험한다. 이러한 경우 심볼에 대한 체크를 하지 말고 강제로 올리라는 명령어. .reload /i aaa.exe 5) .reload /u 심볼을 내리는 명령어 .reload /u mydrv.sys (특정모듈 심볼 내리기) .reload /i mydrv.sys (특정모듈 심볼 올리기) 좋은정보가 되셨다면 아래 한번 클릭해주세요^^ 2009. 9. 3.
MiniDump 제작 제품 개발중에도 출시후에도 항상 나타나는 버그. 오늘도 버그를 잡기위해 하루종일 삽질을 한다. ㅋㅋ 물론 정말 머리가 뛰어나 천재적인 두뇌로 머리속에서 완벽한 설계를 하고 바로 코딩에 옮겨 전혀 버그없는 프로그램을 만드는게 목표이긴 하지만, 그건 정말 .. 천재라도 할 수 있을까? ㅎㅎ 예전부터 프로그램이 비정상적으로 종료가 될때 해당 정보를 저장하여 분석할 수 있으면 좋겠다라는 생각을 많이 했지만, 생각뿐이었었다. 오늘도 열씨미 개발하며 테스트를 하는데 중간에 뻣어버리는 프로그램 -_- 당최 어디서 죽는지 찾질못해 헤매는 도중 Devpia에서 Dump 제작하는 팁을 찾았다~ 내용을 보니 바로 내가 찾던것~ㅎㅎㅎㅎㅎㅎ 아무생각 없이 길가다가 만원짜리 주운 심정이라고나 할까? ㅋ 아무튼 설명도 잘되있고 친.. 2008. 12. 5.
Detected Memory leaks(메모리릭 찾기) 코드를 작성하다보면 new연산자를 이용해서 메모리를 동적으로 할당하여 사용하는 경우가 매우 흔하다. 이후 해제를 해주면 아무 문제가 없지만.. 이때 해제를 해주지 않았을 경우 디버거는 Output Window로 Memory leaks 라는 메시지를 출력한다. 즉, Memory leak란 메모리를 할당하여 사용하고 해제를 해주지 않았을때 발생하는 것인데.. 아주 작은 프로그램이나 유닛테스트용 프로그램 이라면 크게 상관이 없지만, 대부분의 프로그램에서는 이것은 언제 터질지 모르는 폭탄과도 같은 것이다. 생각해봐라... 제품을 팔았는데, 어느날 갑자기 사용자가 연락이 와서.. "이거 자꾸 프로그램이 죽어버리는데요?" 라고 했을때... 백날 컴파일만 해도 에러 하나 뜨지 않는다. 지금 이 글을 쓰고 있는 주인장.. 2008. 6. 18.
메모리 릭 찾기 CRT( C Runtime library )를 사용합시다. 아래의 코드를 사용하면 메모리 릭( 메모리 누수, Memory Leak )에 효과적으로 대처할 수 있다. 주의할 점은 사용법을 명확히 숙지하고서 사용할 것. Introduce. int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow ) { // Enable run-time memory check for debug builds. #if defined(DEBUG) | defined(_DEBUG) _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); #endif 다이렉트 X.. 2008. 6. 18.