참고 자료 Windbg Tutorial http://www.codeproject.com/KB/debug/windbg_part1.aspx Windows에서 디버깅을 위해 만든 작은 메모리 덤프 파일을 읽는 방법 http://support.microsoft.com/default.aspx?scid=kb;ko;315263 Windbg로 덤프 남기는법http://msdn.microsoft.com/en-us/library/ff562428.aspx 잊지 말아야 할 점은, windbg는 symbol과 source code의 매칭을 해주지 않는다. 반드시 Symbol File Path와, Source File Path 메뉴 에서 경로를 제대로 지정해주어야, 덤프 분석시 정보가 제대로 출력된다. windbg shell c..
Download http://www.microsoft.com/DownLoads/details.aspx?familyid=C4A25AB9-649D-4A1B-B4A7-C9D8B095DF18&displaylang=en Testing Applications with AppVerifier http://msdn.microsoft.com/en-us/library/ms807121.aspx Using Application Verifier Within Your Software Development Lifecycle http://msdn.microsoft.com/en-us/library/aa480483.aspx#appverifier_sdl_topic2
WIN32 Console Application에서 MFC를 사용해야 하는 경우가 있습니다. 그냥 특정 클래스 기능만 사용하는게 아니고 다이얼로그나 윈도우 등을 사용하고 싶어지면, 참 난감해지죠? 제 경우에는 CppUnit을 사용하면서 필요했는데요, 어떻게하면 사용 가능해지는지 간단한 예제 보여드리겠습니다. 선언해두어야 할 전처리기입니다. #include //반드시 windows.h보다 먼저 선언되어 있어야 합니다. #include 그리고 프로그램 내에 삽입되어야 할 코드입니다. // initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TOD..
서버 테스트 방법은 지난 포스팅 (http://elky.tistory.com/161)을 보신 분이라면 알겠지만, 테스트의 목적은 개발자의 의도대로 프로그램이 동작하는지를 확인하는 과정이다. 클라이언트가 서버보다 안정성에 대한 이슈에 덜 민감하지만, 클라이언트 역시 안정성 문제에서 자유롭지 못하다. 어떤 프로그램이던 간에 비정상 종료가 되는 프로그램을 좋아할 사용자는 없기 때문이다. 그래서 이번 기회에 클라이언트 프로그램의 테스트에 대한 썰을 풀어보고자 한다. 1. 다양한 운영체제/구동 어플리케이션 환경에서 테스트하라. 특정 어플리케이션이 같이 깔려 있을 경우 동작하지 않는 경우도 있고, 특정 운영체제에서 동작하지 않는 경우도 있다. 이를 위해서는 다수가 사용하는 환경 위주로 테스트 하는 것이 현실적일 것..
Microsoft Specific dllimport, dllexport DLL에서(로) 함수, 데이터, 개체를 내보내는(가져오는) 속성. 함수를 dllexport로 선언하면, 적어도 export된 함수 스펙과 관련된 .DEF (모듈 정의) 파일이 필요없다. 또한 dllexport는 __export 키워드 (16비트 버전의 VC++에서 사용) 를 대체한다. declspec(dllexport) 클래스의 클래스 템플릿 특수화(specialization)는 암묵적으로 declspec(dllexport)가 된다. 즉 템플릿은 명시적으로 인스턴스화(==구체화)되고, 그 멤버들은 반드시 정의되어야 한다. dllexport C++ 함수는 이름장식을 가진 함수를 노출시킨다. C++ 이름장식이 필요없다면, .def 파일 ..
스택의 크기는 한정되어있다. 그럴 수 밖에 없는 것이, 스택 영역은 스레드 별로 다르게 존재해야 되기 때문이다. Visual Studio .net 2003 환경에서 기본 옵션으로 Build 했을 경우 stack 크기는 1M byte 이다. stack 크기를 늘리고 싶다면, 힙 공간을 사용하거나 project - properties - linker - system에서 stack reserve size를 변경하면 된다. 스택의 크기가 크게 배정된다면, 스택 오버플로우의 가능성은 낮지만 스레드 전환시 복사 비용이 크다는 단점이 생긴다. 스택에는 지역 변수, 함수가 되돌아갈 주소, 매개변수 등이 담기는데, 지역 변수를 남발 할 시에는 스택 크기를 넘어서서 스택 오브 플로우가 발생한다. 스택의 크기는 너무 커도 ..
C++에서 Memory(auto든 static이든 dynamic이든)를 사용할 때 초기화 하지 않았을 때의 값은 Undefined다. VC++에서는 Debug모드일 때 메모리 관련 오류를 디버깅하기 위해 자동으로 메모리를 초기화 해 주는데, 그 값들은 아래와 같다. 0xcccccccc (3435973836) - 초기화 되지 않은 지역변수. 0xcdcdcdcd (3452816845) - 초기화되지 않은 힙에 할당된 메모리. 0xdddddddd (3722304989) - 힙에서 free된 메모리. 0xfeeefeee (4277075694) - 힙에서 free된 메모리. 0xfdfdfdfd (4261281277) - 힙에 할당된 메모리의 초과범위(할당된 메모리의 양쪽 끝)
- Total
- Today
- Yesterday
- RoR
- 디자인 패턴
- 엘키
- c언어
- Rails
- ftp
- TraceRoute
- SDL
- 멀티스레드
- SQLite Spy
- perfmon
- EzShortcut
- 조엘 온 소프트웨어
- svn
- MS-SQL
- ruby
- 루비 온 레일즈
- 바로가기 프로그램
- 디버깅
- TDD
- CppSQLite
- Ruby on Rails
- 게임데브포에버
- 리버스 엔지니어링
- 루비
- 좋은 프로그래머
- EasyExec
- NDC2013
- 게임개발포에버
- 임백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |