블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2804)
Unity3D (860)
Programming (479)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (234)
협업 (61)
3DS Max (3)
Game (12)
Utility (140)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (16)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday
회사에서 가끔 오늘이 무슨 요일인지 헛갈릴 때가 있습니다. 야근을 밥먹듯이 하고 주말에도 출근하는 경우가 많은 IT 직군의 비애라 할 수 있죠. 항상 바라보는 노트북 화면에 요일이 표시되어 있다면 참 좋겠는데, 기본 설정에선 일단 마우스를 올려봐야 요일을 알 수 있습니다.


마우스를 올리지 않아도 요일이 표시된다면 참 좋겠죠? 그리고 2011년인거 굳이 표시를 안 해도 다 아는 사실이니, 날짜 표시 형식을 수정해봅시다.

제어판에서 직접 국가별 옵션으로 들어가도 되고, 아니면 intl.cpl을 바로 실행합니다.


형식 탭에서 추가 설정 누르시고


날짜 탭에서 간단한 날짜 부분에 각자 표시하고 싶은 형식을 적어주시면 됩니다.


저는 자세한 날짜에 나오는 M'월' d'일' dddd 형식을 그대로 가져다 썼습니다.


요일이 표시되니 참 좋죠?



[추가]

[입력내용]  yyyy-MM-dd'('ddd')'


반응형
Posted by blueasa
, |
1. Putty에서 세션 하나를 만들고 Save 한다.(안하면 레지에 세션이 없음)
2. 레지스트리 편집기를 열고 
3. [HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions]
을 찾아 들어가서 자신이 원하는 세션을 선택한 뒤에
4. "FontCharSet"=dword:00000081 (16진수: 81)로 변경
하면 된다.


 
반응형

'Tip & Tech' 카테고리의 다른 글

BugTrap  (0) 2012.01.17
윈도우 7 작업 표시줄에 요일 표시하기  (0) 2012.01.12
[펌] 윈7 단축키 대박  (0) 2011.11.26
[펌] O2 최적화보다 O1 최적화가 빠르다?  (0) 2011.09.14
.dmp 파일 남기기  (0) 2011.09.11
Posted by blueasa
, |

[펌] 윈7 단축키 대박

Tip & Tech / 2011. 11. 26. 03:46
반응형
Posted by blueasa
, |

처음 코딩을 하게 되었을 때, 디버깅의 중요성에 대해서 전혀 모르고 있었다. 어느날 버그는 꼬였고, 중단점을 매우 많이 찍으면서 버그 사냥에 몰두하는 나 자신을 보게 되었다. 이것은 .. 디버깅은 정말 정말 중요하다는 사실을 깨닫게 해준 경험이였다.

디버깅을 위해 F9 키를 누르는건 친근한 작업이었고, 보다 더 한눈에 들어왔으면 좋겠다는 생각이 들기 시작했다. 결국 옵션에 이런것이 있지 않을까? 란 궁금증이 들게 되었고, ... 옵션을 가게 된다.

비쥬얼 스트디오 전체

위 그림에서 "도구" 를 클릭한다.


위와 같은 화면이 뜨면 옵션을 클릭 한다.

다음과 같은 화면이 나오면, "디버깅 탭"으로 이동 한다.


"디버깅 탭"에서 "일반 탭" 으로 이동 한다.

이 곳의 세부 설정중 "중단점과 현재 문의 전체 소스 줄 강조 표시" 를 체크 한다.


... 그러면 다음과 같은 효과를 내게 되는 것을 보게 된다.

이것으로 나는 가독성을 높이게 되었고, 눈과 머리로 버그를 보게 되었다.


총평

간단한데, 지금까지 모르고 했었다는게 좀 안타깝다. 이런 Tip 들이 한두가지가 아닌데, 하나씩 정리해 나가는게 좋을 것 같다. 여기서 중요한 사실을 알게 되었는데, "가독성"이란 존재는 머리에도 영향을 미친다는 것이다.

또한 사용자가 보기 편하게 만들어야 한다 는 .. 절대적인 룰으로 받아 들여 진다.



출처 : http://ikpil.com/753
반응형
Posted by blueasa
, |

1. IDE에서 CTRL+ALT+E(메뉴->디버그->에외)

2. Managed Debugging Assistants

3. LoaderLockd의  Throw됨 체크박스 해제


출처 : http://lycobs.springnote.com/pages/1218340



DirectX 관련 소스를 디버깅 할려고 하니 다음과 같은 에러가 발생했습니다.

'LoaderLock' 관리 디버깅 도우미가 'D:\Documents and Settings\chaos\바탕 화면\Mp3Player(2)\bin\Debug\Mp3Player.vshost.exe'에서 문제를 발견했습니다.
추가 정보: DLL 'D:\WINDOWS\assembly\GAC\Microsoft.DirectX.AudioVideoPlayback\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.AudioVideoPlayback.dll'이(가) 
OS 로더 잠금 내에서 관리되는 실행을 시도했습니다. 관리 코드를 DllMain 또는 이미지 초기화 함수 안에서 실행하지 마십시오. 이렇게 하면 응용 프로그램이 응답하지 않을 수 있습니다.

.NET 1.1 로 빌드한 라이브러리를 .NET 2.0 에서 사용하면서 발생한다고 합니다.
해결 방법은 
1. .NET 1.1을 사용한다.
2. VS Tool 에서 ( VS 2008 스크린샷 ) 메뉴-디버그-예외 항목에 들어가면 디버깅할때 예외를 Throw 하지 않게끔않게끔 설정할 수 있습니다.
(cf.두번째 방법으로 무시하면 사용하는것에는 문제가 없지만... 잠정적인 문제가 있는지는 정확하게 확인 되지 않았습니다.)





출처 : http://newmatrix.dyndns.org:81/Default.aspx?Page=Loader-Lock&NS=&AspxAutoDetectCookieSupport=1
반응형
Posted by blueasa
, |

게임 브리오를 보다 보니 기본적으로 VisualStudio 에서 지원하는 속성 매크로

$(ConfigurationName)  와 같이 이미 지원되는것 외에

$(GB_DLL_Suffix) 와 같은 프로젝트에서만 지원되는 속성 매크로를 보았습니다.

 

 

이 값은 어디에 설정 되어있을까 하고 한참 뒤저보았다니

 

프로젝트 속성에서 구성 속성 > 일반 > 상속된 프로젝트 속성 시트

에 설정된 GB_Config_Debug.vsprops  라는 파일에 들어있습니다.

 

 

이 파일을 문서 편집기로 열어보면

 

<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
 ProjectType="Visual C++"
 Version="8.00"
 Name="GB_Config_Debug"
 >
 <Tool
  Name="VCCLCompilerTool"
  Optimization="0"
  PreprocessorDefinitions="_DEBUG;NIDEBUG"
  MinimalRebuild="true"
  BasicRuntimeChecks="3"
  RuntimeLibrary="3"
  DebugInformationFormat="4"
 />
 <Tool
  Name="VCLinkerTool"
  LinkIncremental="2"
  GenerateDebugInformation="true"
 />
 <UserMacro
  Name="GB_Configuration_Name"
  Value="Debug"
 />
 <UserMacro
  Name="GB_DLL_Suffix"
  Value="26VC90D"
 />
 <UserMacro
  Name="GB_Tool_Plugin_Extension"
  Value="dld"
 />
 <UserMacro
  Name="GB_Shader_Library_Extension"
  Value=".dl9"
 />
 <UserMacro
  Name="GB_Shader_Parser_Extension"
  Value=".dp9"
 />
</VisualStudioPropertySheet>

와 같습니다.

 

User Macro 로 추가 시켜 주면 속성 매크로에서 나타나는것을 알 수 있었습니다.

 

Visual Studio 에 정의된 기본적은 Property Sheet 는

C:\Program Files\Microsoft Visual Studio 9.0\VC\VCProjectDefaults

와 같은 경로에 보면 참고 할 vsprops 들이 들어있습니다.

이중 CoreWin.vsprops 와 같은 파일을 가져다 수정 하면 손쉽게 작성 할 수 있습니다.



출처 : http://blog.naver.com/saram95/90111271729

반응형
Posted by blueasa
, |

Debug에서는 최적화를 설정하면 안된다.

1. 속성 -> 구성 속성 -> 일반에서 옵션 설정
- 전체 최적화 최적화: 링크 타임 코드 생성 사용

2. 속성 -> 구성 속성 -> C/C++ -> 최적화에서 옵션 설정
- 최적화: 속도 최대화
- 인라인 함수 확장: 적합한 것 모두 확장
- 내장 함수 사용: 예
- 크기 또는 속도: 코드 속도 우선
- 프레임 포인터 생략: 예
- 파이버 안전 최적화 사용: 아니오
- 전체 최적화 최적화: 링크 타임 코드 생성 사용

3. 속성 -> 구성 속성 -> 링커 -> 최적화에서 옵션 설정
- 링크 타임 코드 생성: 링크 타임 코드 생성 사용
- 참조: 참조하지 않는 데이터 제거
- COMDAT 정리 사용: 중복 COMDAT 제거

최적화옵션으로 release하면 이전버젼 포팅시 오류발생소지가 있으므로 끄자

반응형
Posted by blueasa
, |

Debugging Applications For Microsoft Windows 책에 보면 O1최적화 (크기 최소화)가 O2최적화(속도 최대화)보다 더 빠르다고 나와있다..

정말????


책에 보면 대략 실행파일의 이미지 크기가 작으면 page fault를 더 적게 일으키므로 더 빠르다라고 나와있다..

음.. 맞는말이다.. page fault가 일어날 경우에는 OS가 프로그램 실행에 필요한 데이터를 page file에서 실제 메모리에 load하기 위해서 엄청난 오버헤드가 발생한다..

그렇지만 고작 몇백킬로 차이밖에 안나는 것이 얼마나 눈에 띄게 속도 차이가 날까? 라는 의문이 마구마구 들었다..

그래서 테스트를 해봤다..

우선 테스트 프로그램을 만들어야하는데.. 대략 만들기는 귀찮고 해서 GUI를 이용하기로 했다.. GUITester에서 상단에 프레임률을 표시하기 때문에 이를 확인해보면 된다.

그래서 우선 프로젝트 세팅에서 아래와 같이 O2 최적화로 세팅을 했다.



그리고 컴파일.................................................


그리고나서 바이너리의 크기를 확인했다.



대략 1메가 정도 한다..
그럼 이제 실행을 해보자..



음.. 약 262프레임정도 나온다..



그럼 이제 O1로 컴파일을 해보자... 우선 프로젝트 세팅을 하고..



그리고 컴파일.............................

그리고나서 바이너리 크기 확인



약간 줄었다.. 70kb정도 ㄱ- 이정도로 정말 속도 차이가 날까???

그리고 실행...



엇!!!!! 이게 무슨일인가.. 미약하지만 정말 O2보다 프레임률이 올라갔다...

혹시나 하여 두세번 반복해서 재컴파일을 하여 비교를 해봤지만 확실히 차이가 보였다..

그렇지만 내가 생각하기에 page fault때문에 성능 차이가 나는것 보다는 바이너리의 크기가 작아지면서 CPU의 명령어 캐시히트율이 올라가서가 아닌가 하는 생각이 든다..

아마 항상 O1이 O2보다 빠르진 않을거라 본다.. 실제로 어떤게 더 빠른지는 테스트를 통하여 최적의 최적화 옵션을 선택해야 할 것이다.


반응형
Posted by blueasa
, |

.dmp 파일 남기기

Tip & Tech / 2011. 9. 11. 21:11

SetUnhandledExceptionFilter 를 사용하자.

#include <dbghelp.h>

#pragma comment(lib, "dbghelp.h")

함수원형

LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilter (

__in LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter

);

사용법

1. ExceptionHandler implementation

LONG CALLBACK FunctionName (_EXCEPTION_POINTERS *pExceptionInfo)

{

pExceptionInfo->ExceptionRecord->ExceptionCode; // ExceptionCode

HANDLE hFile = CreateFile(DumpFileName);

MINIDUMP_EXCEPTION_INFORMATION eInfo;

eInfo.ThreadId = GetCurrentThreadId();

eInfo.ExceptionPointers = pExceptionInfo;

eInfo.ClientPointers = FALSE;

MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal,

pExceptionInfo ? &eInfo : NULL, NULL, NULL);

return EXCEPTION_EXECUTE_HANDLER;

}

2. Main 함수에서 1에서 구현한 ExceptionHandler 등록

int main(void)

{

....

SetUnhandledExceptionFilter(UnhandledExceptionHandler);

....

}

[출처] .dmp 파일 남기기|작성자 미락꿀

반응형
Posted by blueasa
, |

컴파일러 옵션


/RTC (런타임 오류 검사)

/RTCc : C/C++ > 코드 생성 > 작은 형식 검사 (값을 작은 데이터 형식으로 변환할 때 데이터 손실이 있는지 확인)

/RTCu : C/C++ > 코드 생성 > 기본 런타임 검사 (초기화되지 않은 변수 참조를 추적)


/GS (버퍼 보안 검사)

C/C++ > 코드 생성 > 버퍼 보안 검사

Debug Mode에서도 사용을 하기를 권장한다.


/O1 (크기 최소화)

C/C++ > 최적화 > 최적화

기본적으로 Release모드에서 /O2 (속도 최대화) 를 사용한다.

그러나, MS는 모든 상업용 프로그램을 /O1 을 사용한다.


/showIncludes

C/C++ > 고급 > 포함 표시

어떤 파일을 포함하고 그 파일의 위치를 확인 할 수 있다.


링커 옵션


/MAP

/MAPINFO:LINES

/MAPINFO:EXPORTS

링커 > 디버깅

항상 사용을 하도록 하자.


/OPT:NOWIN98

링커 > 최적화 > Win98에 맞게 최적화

Win98, Me 를 지원하지 않는다면 사용하자. 응용프로그램의 크기 감소 효과.


/Release

링커 > 고급 > 체크섬 설정

이름과는 다르게 이 스위치는 PE헤더에 체크섬 값을 설정한다.

디버그 모드에서는 절대 사용하지 말자. 일반 사용자-모드 응용 프로그램은 이 값이 필요치 않다.


반응형
Posted by blueasa
, |