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

카테고리

분류 전체보기 (2741)
Unity3D (30)
Programming (475)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (228)
협업 (58)
3DS Max (3)
Game (12)
Utility (136)
Etc (96)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (54)
Android (15)
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
05-18 17:41
브레이크 포인트 (중단점) 걸고 디버깅 할려 할 때

빨간 동그라미가 투명해지면서 

'중단점이 현재 적중되지 않습니다.  소스 코드가 원래 버전과 다릅니다' 
되는 경우가 종종 생깁니다.


= 방법 ==================================


해당 소스파일을 '저장 고급옵션' 누르시고 유니코드 65001 로 저장 해주세요.


옵션에서 소스코드가 달라고 그냥 디버깅 하기 체크도 되지만 그건 좀 찝찝하죠잉.




출처 : 
http://lab.gamecodi.com/board/zboard.php?id=GAMECODILAB_Lecture&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=last_comment&desc=desc&no=241  
반응형
Posted by blueasa
, |






태그 구름 (Tag Cloud) 는 메타 데이터에서 얻어진 태그들을 분석하여 중요도나 인기도등을 고려하여 시각적으로 늘어 놓아 웹사이트에 표시하는 것이라고 할 수 있습니다
사용자는 이렇게 표시된 태그중 마음에 드는 키워드를 발견하고 그것을 선택하여 그 메타 데이터에 원래 연결된 웹 페이지로 이동을 하게 됩니다. 


티스토리(Tistory) 블로그를 대상으로 하여 태그 구름(Tag Cloud)을 적용해 보도록 하겠습니다. 




압출 파일을 풀면 swfobject.jstagcloud.swfscript.txt 파일이 있습니다. 




1. swfobject.js, tagcloud.swf 파일들을 티스토리 파일 업로드 기능을 이용해서 업로드 합니다. 







2. HTMLl/CSS 편집에서 소스 코드를 수정해야 합니다. 




Ctrl+F 키를 눌러서 찾기 기능을 이용하여 '태그목록'을 검색하였습니다. 's_random_tags'로 검색하셔도 됩니다.
기존에 있는 태그목록 모듈인 
<ul><s_random_tags> ~ </s_random_tags></ul> 부분을 삭제 하고 아래 스크립트를 작성합니다. 







스크립트를 보기 좋게 나열 하다 보니 소스코드 일부가 잘려 버렸네요 ;;
압축 파일 안에 보시면 script.txt  파일이 있는데요, script.txt  파일내용을 복사 (Ctrl+C) 해서  
<ul><s_random_tags> ~ </s_random_tags></ul> 부분을 삭제한 위치에서 붙여 넣기 (Ctrl+V) 하시면 됩니다. 



&lt;!-- 태그 구름 위젯 설정 --&gt; &lt;DIV style="DISPLAY: none" id=htags&gt; &lt;TAGS&gt; &lt;S_RANDOM_TAGS&gt; &lt;A class= href="http://grimreper.tistory.com/script/powerEditor/pages/"&gt; &lt;/A&gt; &lt;/S_RANDOM_TAGS&gt; &lt;A href="http://grimreper.tistory.com/"&gt;&lt;/A&gt; &lt;/TAGS&gt; &lt;/DIV&gt; &lt;DIV id=TiCumulus&gt; &lt;P&gt;Tistory Cumulus Flash tag cloud by &lt;A href="http://zoc.kr/"&gt;BLUEnLIVE&lt;/A&gt; requires Flash Player 9 or better.&lt;/P&gt; &lt;/DIV&gt; &lt;SCRIPT type=text/javascript src="./images/swfobject.js"&gt; &lt;/SCRIPT&gt; &lt;SCRIPT type=text/javascript&gt; var t = new SWFObject("./images/tagcloud.swf", "tagcloud", "100%", "200", "7", "#ffffff"); t.addVariable("tcolor", "0x222222"); t.addVariable("hicolor", "0xff0000"); t.addVariable("mode", "tags"); t.addVariable("distr", "true"); t.addVariable("tspeed", "100"); t.addParam("allowScriptAccess", "always"); t.addParam("wmode", "opaque"); t.addVariable( "tagcloud", document.getElementById('htags').innerHTML.replace(/class=([\w]+)/gi, 'class="$1"').replace(/\"\"/gi, '"').replace(/class=\"/gi, 'style=\"font-size:').replace(/:cloud([\d])/gi, ':1$1pt;').replace(/TAGS\&gt;/gi, 'tags&gt;').replace(/\&lt;A\s/gi, '&lt;a ').replace(/\&lt;\/A\&gt;/gi, '&lt;/a&gt;').replace(/\"/g, "'") ); t.write("TiCumulus"); &lt;/SCRIPT&gt;




3. 적용이 완료 되었습니다. 








{ 주석 처리하시면 제대로 적용되지 않습니다. 
삭제 하시던가 추가할 스크립트 코드 보다 아래쪽에 위치하도록 하세요,
적용 안되는 오류를 찾는다고 자그마치 1주일이 소요 되었습니다. ㅠ.ㅠ }





혹시 스크립트 코드에 대한 자세한 사항이 궁금하시다면 
http://www.roytanck.com/2008/05/19/how-to-repurpose-my-tag-cloud-flash-movie/ 를 방문해 보시기 바랍니다.




영문으로 되어 있어서 보기가 좀 그렇지만,

태그 클라우드 적용시에 원하시는 모양으로 어느 정도 구현이 가능하지 않을까 생각 됩니다. 
반응형
Posted by blueasa
, |

이번 메일진에는 BugTrap이라는 공개 에러 리포트 라이브러리에 대해서 간단히 소개하겠습니다.^^

최근에 제가 가입한 스터디카페를 통해 알아서현재 사용중에 있는데 상당히 편리하고 괜찮은 물건입니다.

VS가 설치되지 않은 PC에서(즉 개발자가 아닌 사용자의 PC에서게임이나 툴들이 에러가 났을 때(소위 뻑났을 때원인을 분석하는 방법중에 가장 유용한 방법이 미니덤프파일(*.dmp)파일을 남겨서 덤프파일을 분석 하는 방법입니다.

버전만 맞는 소스코드와 PDB파일만 있다면에러가 났을때의 상황을 거의 100%재현이 가능하고 분석도 용이하게 해주는 방법입니다.

에러가 난 코드와 뻑이 났을때의 변수값이나 콜스택등을 바로 분석할 수 있죠.

 

에러난 PC에서 dmp파일을 남긴 후이것을 개발자 PC로 전송받는 방법은 여러 가지가 있습니다일반적으로 FTP서버나, HTTP서버로 전송을 받는데이러한 기능을 자동으로 해주는 공개 라이브러리가 지금 소개할 “BugTrap”입니다.

장점은 라이브러리만 제공하는 게 아니라. TCP서버나 HTTP서버(Web) 설치 버전도 제공이 되며에러 리포트에 덤프 파일뿐만 아니라에러가 발생한 PC의 사양 등이 포함된 에러 로그 파일과 에러날  당시의 스크린샷파일도 같이 보내준다는 것입니다.

내부에 Zip라이브러리까지 포함하고 있어서 이러한 에러 리포트 파일들은 zip으로 압축되어 전송되기 때문에용량에 대한 부담도 자동으로 해결해 줍니다.

 

아래 내용은 제가 회사에서 사용하기 위해서 간단한 Overview로 작성한 내용입니다더욱 자세한 내용을 원하시면 BugTrap링크 페이지에 가시면 자세한 소개를 보실수 있으며무료로 다운받으실 수 있습니다.

 

1. BugTrap 소개  분석

1.1. BugTrap (http://www.codeproject.com/tools/BugTrap.asp)

 

l         Code Project에 존재하는 공개 에러 리포트 라이브러리

l         BugTrap 라이브러리를 사용한 프로그램이 에러가 발생하게 되면미니덤프 파일(.dmp), 에러 로그(.xml), 스크린샷(.bmp)등을 생성한 후 zip파일로 생성 파일들을 압축하여로컬 컴퓨터에 저장하거나 BugTrap 서버로 전송할 수 있다.

l         BugTrap Server 프로그램을 이용하면자동으로 HTTP서버(Web), TCP서버를 설치할수 있으며간단한 설정만으로 에러 리포트를 서버로 전송 받을 수 있다.

l         에러가 난 경우 GUI 윈도우 창이 표시되어서 다양한 정보를 알 수 있으며원클릭으로 BugTrap Server에 에러 리포트를 전송할 수 있다.

l         크게 BugTrap Server 프로그램과  BugTrap 라이브러리로 구성되어 있으며서버 없이 라이브러리만으로도 사용이 가능하다.

l         로컬 컴퓨터에 덤프파일 저장 및, TCP HTTP을 이용하여 BugTrap Server에 에러 리포트를 전송할 수 있으며, BugTrap Server는 설치 프로그램이 포함되어 있다.

l         서버 프로그램과 헤더파일들과 Lib, DLL 파일들로 구성되어있다.

l         인스톨 버전과 잘 정리된 Document를 제공한다.

l         사용은 자유지만소스는 공개되어 있지 않다.

1.2. BugTrap Overview

 

< Dump파일은 Mail Server를 통해 개발자에게 전송되거나, BugTrap Server로 전송된다 >


 

1.3. BugTrap 사용 화면

l         프로그램 실행중 에러가 발생하면 아래와 같은 창이 뜬다.

 

l         위 창에서 ‘Submit Bug’ 버튼을 클릭하면 설정된 BugTrap Server로 덤프파일이 전송되고mail to…’를 클릭하면 설정된 mail주소로 덤프파일이 첨부된 메일이 발송된다.

l         More…’버튼을 클릭하면 아래와 같은 확장된 창이 뜬다.

 

1.4. BugTrap Server

l         BugTrap을 이용하여덤프파일을 전송하는 방법은 아래 3가지가 있다.

 

1.4.1. E-Mail 첨부 파일로 전송하는 방법

l         프로그램에서 에러가 발생했을때등록된 E-Mail에 덤프파일을 첨부하여 개발자에게 메일로 발송한다.

l         장점

n        추가로 BugTrap Server를 설치할 필요가 없다.

n        방화벽을 통과하여 전송할수 있다.

n        OutLook같은 일반 메일 클라이언트를 이용하여 메일을 작성하여 전송할수도 있다아니면 BugTrap에 내장된 간단한 메일 작성 프로그램을 이용하여 작성하여 전송한다.

l         단점

n        여러 프로그램으로부터 날라오는 에러 리포트를 필터링하여 관리할 수 없다.

n        첨부파일(덤프파일)이 너무 큰 경우 메일로 전송할 수 없을 수도 있다.

1.4.2. TCP 기반 프로토콜을 이용하여 전송하는 방법

l         BugTrap Server 프로그램을 특정 서버 컴퓨터에 설치하여클라이언트 프로그램에서 에러가 발생한 경우, TCP기반 프로토콜을 이용하여 서버로 덤프파일등을 전송한다.

l         .NET 플래폼 기반의 서버 프로그램과플래폼 독립적으로 사용할 수 있는 Java기반의 서버 프로그램의 두 종류가 있다.

l         장점

n        에러 리포트는 서버에서 설정한 저장소(폴더)에 프로그램별버전별로 폴더가 생성되어 구별되어 저장된다설정파일에서 설정한 프로그램의 에러리포트만 저장할 수 있도록 필터링이 가능하다.

n        사이즈의 제한이 없으며, TCP를 사용하기 때문에 전송속도가 빠르다.

n        BugTrap Server 프로그램이 가볍고 효율적이다.

n        Web Server가 필요 없어 어떤 컴퓨터에서 서버를 설치할 수 있다.

l         단점

n        TCP를 사용하기 때문에서버의 방화벽을 뚫지 못할수도 있다.

1.4.3. Http 기반 프로토콜을 이용하여 전송하는 방법 (WEB)

l         IIS가 설치된 Web Server Web Server Bug Trap Server를 설치하여, HTTP 기반 프로토콜을 이용하여서버로 덤프파일등을 전송한다.

l         장점

n        에러 리포트는 서버에서 설정한 저장소(폴더)에 프로그램별버전별로 폴더가 생성되어 구별되어 저장된다설정파일에서 설정한 프로그램의 에러리포트만 저장할 수 있도록 필터링이 가능하다.

n        HTTP기반이기 때문에 방화벽을 통과한다.

n        사이즈의 제한이 없다.

l         단점

n        BugTrap Server가 설치될 서버 컴퓨터에 Web Server이어야만 한다.

n        HTTP 프로토콜은 TCP 프로토콜에 비해서 속도면에서 비효율 적이다.



반응형
Posted by blueasa
, |

BugTrap

Tip & Tech / 2012. 1. 17. 10:24
이번 2차 클베의 숨어있는 공신..
BugTrap을 소개한다.

BugTrap은 프로그램이 크래쉬났을때 크래쉬정보를 분석하고, 
분석된 정보를 메일서버 또는 TCP서버로 전송해주는 역할을 한다.
사용법이 매우 간단하며, 오픈소스라 적당히 커스터마이징 하기에도 무리가 없다.

일단 기본적인 BugTrap사용법에 대해 알아보고,
카르카스 온라인에서는 사용한 통계툴에 대해 소개한다.
참고로 카르카스 온라인에서는 메일서버가 아닌 TCP서버를 사용한다.

## 프로그램구동시 lib파일을 적재한다.

#pragma comment(lib, "BugTrap.lib")

## 진입점에서 초기화한다.
void SetupBugTrap()
{
        BT_InstallSehFilter();

        // 애플리케이션의 버전을 남긴다.
        // TCP서버로 전송할 경우 버전에 따라 크래쉬정보를 모아주므로 상당히 유용한 기능이다.
        BT_SetAppVersion( cTime.Format(L"%Y-%m-%d").GetString() );

        // 애플리케이션 이름을 설정한다.
        BT_SetAppName(_T("Karcass Client"));

        // 메일서버로 전송할 경우 전송할 메일주소이다. ( 카르카스온라인에선 사용하지 않는다. )
        BT_SetSupportEMail(_T("loveru0@jcrsoft.co.kr"));

        // BugTrap의 속성을 정의한다.
        BT_SetFlags( dwFlag );

        // 대표적인 속성들은 다음과 같다.
        // BTF_DETAILEDMODE : 미니덤프나 로그파일등을 압축해서 모두 전송해준다. 
                                              정의하지 않을 경우 기본적인 정보만 전송해준다.
        // BTF_SCREENCAPTURE : 스크린샷을 첨부한다.

        // 미니덤프에 참조변수까지 남긴다.
        BT_SetDumpType( MiniDumpWithDataSegs | MiniDumpWithIndirectlyReferencedMemory );

        // 전송할 TCP서버를 세팅한다.
        BT_SetSupportServer(_T("000.00.000.000"), 9999);

        // Log생성
        g_jBT_LogSound = BT_OpenLogFile( L"SoundLog.txt", BTLF_TEXT );
        BT_SetLogSizeInEntries( g_jBT_LogSound, 1024 );
        BT_SetLogFlags( g_jBT_LogSound, BTLF_SHOWLOGLEVEL | BTLF_SHOWTIMESTAMP );
        BT_SetLogLevel( g_jBT_LogSound, BTLL_INFO );
        BT_AddLogFile( BT_GetLogFileName( g_jBT_LogSound ) );
}

## 생성한 로그사용
HRESULT JSound::LoadSoundFromMemory( const char* cFileName )
{
        ...

        BT_InsLogEntryF( 
                g_jBT_LogSound, BTLL_INFO, _T("LoadSoundFromMemory : %s"), JUtil::ToWideString(cFileName).c_str() );

        ...
}

TCP서버를 사용하므로 서버머신에 BugTrap서버프로그램을 실행시켜두는 것으로 기본적인 세팅은 끝이다.

다음은 크래쉬가 났을때의 BugTrap의 모습이다.












보시다시피 뭐가뭔지 영어의 압박이 밀려온다.
과연 유저가 저화면을 만났을때 제대로 전송버튼을 눌려줄까?

여기서 오픈소스의 장점이 나타난다.
다음과 같이 알아보기 쉽게 변형해서 사용하자.















이제 통계툴을 소개한다.
위에서 메일서버가 아닌 TCP서버를 사용한 이유가 여기서 나타난다.
메일서버는 속도가 느리며, 저장방식이 툴만들기에 적합하지 않기 때문이다.

앞서얘기했듯이 TCP서버로 전송되어져온 크래쉬 정보는 Version별로 생성된 폴더에 저장된다.
Version으로 클라이언트가 실행될때의 날짜를 세팅하고 있으므로 날짜별로 같은폴더에 모이는 효과를 가진다.

툴은 특정폴더내의 크래쉬정보들을 대상으로 통계작업을 수행하면 된다.














개별적인 크래쉬정보는 ZIP파일로 압축되어 있으며
압축파일내의 크래쉬정보파일, 미니덤프파일, 로그파일등을 적절히 이용하면 된다.

카르카스온라인에서 사용하고 있는 분석툴이다.
보안상 부분적으로만 공개한다.

폴더를 열면 폴더내의 크래쉬정보들을 
파일명과 함수명을 기준으로 통계작업을 수행한다.
























종류별로 모아진 데이터를 기반으로 개별적인 정보들을 보여준다.





































서비스를 하다보면 수많은 크래쉬에 프로그래머들은 지쳐간다.
BugTrap같은 잘만들어진 라이브러리를 위와같은 툴로서 활용하면 보다 
빠르고 편하게 크래쉬에 대처할 수 있고, 화기애애한 개발분위기가 조성되지 않을까.


출처 : 
http://loveru0.egloos.com/1351931  

 

BugTrap 설정시 문제점들...

클라이언트에 버그트랩설치시에는 별로 어렵지 않다 나오는데로 하기만 하면된다

ANSI mutibyte 일 경우는 BugTrap.lib를 사용하고 
UNICODE일 때는 BugTrapU.lib를 사용해야한다는 것 정도만 조심하면 될듯
(똑같이 사용했는데 서버와 연결이 안되면 의심해 봐야할듯)


하지만 문제는 서버를 설치할 때이다.

버그트랩을 설치하면 해당 폴더에 Server라는 폴더가 생기고 그안에 FTP용 서버인 BugTrapServer가 존재한다

가이드를 보면 

서비스 등록
BugTrapServer.exe /install

서비스 해제
BugTrapServer.exe /uninstall


이라고 나와있다.

하지만 서비스 등록을 하려고 위와 같이 실행해보면



System.ArgumentNullException : 값은 null일 수 없습니다



라는 글이 나오는 것을 확인 할 수 있다.

해결법은 간단하다
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 폴더에 존재하는 InstallUtil.exe로 서비스에 등록하면 된다

InstallUitl.exe (절대경로)\BugTrapServer.exe

위와 같이 실행하면 된다  

반응형
Posted by blueasa
, |
회사에서 가끔 오늘이 무슨 요일인지 헛갈릴 때가 있습니다. 야근을 밥먹듯이 하고 주말에도 출근하는 경우가 많은 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
, |