5월, 2009의 게시물 표시

다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다

이미지
네뷸라 프로젝트를 빌드중 이상한 Fatal 에러가 생기더군요.

Error: Fatal error  오후 3:15:45 (+0:13)  Target queue management failed.  Error starting target 'cl: crc32.c -> crc32.obj' on machine 'Local CPU 1'  Error: Failed to get file object type  Access violation at address 0001231A in module 'xgHandle.exe'. Read of address 00A4FFFC  (xgHandle utility returned code: 0x00000002)  Cannot open file: C:\Program Files\Nebula3 SDK (Apr 2009)\code\vs9.0\Win32\Debug\zlib_win32\vc90_ib_1.idb: 다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다

일단 작업관리자를 열어 mspdbsrv.exe 프로세스를 죽인 후 프로젝트 클린을 한번 하고나서 빌드를 해주면 해결이 됩니다. 저 파일이 뭐하는 녀석인지는 잘 모르겠지만 pdb라는게 있는걸로 봐서 디버그 관련 된 파일 같은데 말이죠. 꼭 네뷸라에서만 생기는 에러는 아닌 듯 합니다.

멀티 쓰레드 어플 디버그 데드락 현상 해결하기

이미지
요즘들어 네뷸라3 분석을 하는데 있어서 자꾸 OS가 멈추고( 완전 멈추는건 아니고 1분에 한번 윈도우 이벤트 발생할까 말까한 정도로 버버벅... ) 당연히 OS가 느려지니 디버그 중인 것도 응답없음 상태로 돌입을 하더군요. 뭔가 했더니 이게 그 유명?한 데드락 현상이라고 하네요. 메인 쓰레드 말구 추가로 쓰레드가 돌아가는 어플들은 다 이렇다는데 정말이지 죽을 맛이더군요. 작업관리자 열어서 디버그 중인 네뷸라3 프로젝트를 강제 종료할려고도 해봤지만 왠걸.. 작업관리자 자체가 뜨는데도 버버버벅...그래서 재부팅하고 다시 디버그... 5분도 안되 또 데드락 걸리고 재부팅...또 걸리고 재부팅...;;; 네뷸라3가 쓰레드가 많이 돌아가서 이런 환경에서의 개발은 또 첨( 네트워크는 몇년전 학원 다니던 시절 1달 공부한것 말고는... )이라 당황스러웠죠.

그래서 검색을 해봤습니다. 일단 MS의 IME쪽 버그라고 합니다. ctfmon과 IME랑 엮이면서 문제가 발생한다고 하네요. 오피스를 설치하면 더 이런 현상이 발생한다고 합니다. 일단 해결법이라고 해서 정리는 해보겠는데 정말 이걸로 해결이 되는건지 의구심이 들더군요.
일단 제어판의 '국가 및 언어 옵션'을 실행합니다.

'언어' 탭에서 자세히를 누릅니다.

'고급' 탭에서 '고급 텍스트 서비스 사용 안 함'을 체크 합니다. 이걸 체크하면 기존에 실행 되어있는 창에 한글입력이 안된다는데 그 것들을 다시 실행하면 아무 이상없이 한글 입력은 되더군요. 

지금 글 작성하는 중에도 다시 디버그를 해보았는데 데드락은 안 걸리고 있네요. 정말 이렇게 해결이 되는건가? 이렇게 간단히 해결할꺼면 MS에서 서비스팩으로 업데이트 패치를 하지 않았을까하는 생각도 드는데 말이죠. 그리고 이 데드락은 MS의 Windows에서만 걸리는 건지도 궁금하네요. 다른 OS에서 개발은 안해봐서. 계속 데드락 안 걸리고 잘 되었으면 좋겠는데 해결이 제대로 된건지 만건지 모르겠습니다.

말할 때마다 행운을 부르는 대화법

이미지
제가 한가지 옥의 티( 적당한 다른 말이 갑짜기 생각이 않나네요. )가 있다면 사람들과의 의사소통 부분에 있어서 잘 안된다라고 할까요? 특히나 여성분들 앞에선 더더욱이 그렇다죠. 소개팅이라도 나간다면 정말 무슨말을 해야할까 걱정이 되기도 하고 뭔 말을해도 재미있지도 않고 말이죠. 이 문제에 대한 여러가지 원이이 있겠지만 개인적으로 근본적인 문제는 꽤나 사적인 부분이 있긴 한데 이건 고치려면 돈이 100만원 이상 깨지는 것이라 항상 그려러니 하고 넘어가고 있었죠. 그러던 중 3월달에 어느 인터넷 서점 반값 행사로 올라온 책이 '말할 때마다 행운을 부르는 대화법' 바로 이놈 이었습니다. 그래 일단 사적인 부분은 나중에 고쳐보도록 하고 책을 통해서 뭔가 얻어보자는 심정으로 바로 질렀습니다. 지금 확인해보니 1만원짜리 책인데 반값 할인에 아마 쿠폰까지해서 3,900 냥에 샀군요. 무지 싸게샀네요~ ^^

내용은 크게 1부 여러가지 대화법에 대한 설명 부분, 2부 저자분이 여러 사람들이 여러 상황에 처한 내용을 상담하면서 풀어가는 대화법, 마지막 3부는 해서는 안될 것과 지켜야할 대화법칙에 대한 설명으로 이루어져 있습니다. 그중에서 제일 와다았던 것은 바로 처음 내용인 '비호감을 호감으로 바꾸는 행운의 대화법'에서 '상대방의 눈을 보며 말한다'가 기억에 남는군요. 뭐 당연한 말 아닌가 싶지만 저는 사적인 부분과 겹치면서 이게 잘 안되더군요. 그 외에도 2부에서의 각각 상황에 따른 대화법도 나름 도움이 될 듯합니다. 모든 자기계발 서적들이 다 그렇듯 읽다보면 알고있던 내용이거나 너무나도 당연시하게 생각하는 것들의 내용들이 많이 있습니다. 하지만 그 당연시 하던것을 과연 저는 머리로만 당연시 했고 실천을 안했다는게 문제겠네요. 

책의 머릿말에도 있듯이 "그렇게밖에 말을 못해?", "말이라도 곱게하면 덜 밉지" 등의 의사소통에 갈등을 겪고 계시는 분들은 한번쯤 읽어보시길 권장해 드립니다. 저도 아직 …

inline 때문에 생긴 error LNK2005

Linking...
testgameapplication.obj : error LNK2005: "public: struct _D3DPRESENT_PARAMETERS_ const * __thiscall Graphics::Display::GetPresentParameters(void)const " (?GetPresentParameters@Display@Graphics@@QBEPBU_D3DPRESENT_PARAMETERS_@@XZ)이(가) testgame.obj에 이미 정의되어 있습니다.
application_win32.debug.lib(gameapplication.obj) : error LNK2005: "public: struct _D3DPRESENT_PARAMETERS_ const * __thiscall Graphics::Display::GetPresentParameters(void)const " (?GetPresentParameters@Display@Graphics@@QBEPBU_D3DPRESENT_PARAMETERS_@@XZ)이(가) testgame.obj에 이미 정의되어 있습니다. ...
..\..\bin\win32\testgame.debug.exe : fatal error LNK1169: 여러 번 정의된 기호가 있습니다.
Error executing link.exe (tool returned code: 1169)

testgame - 24 error(s), 0 warning(s)
작업 중 링크에러가 총 에러 24개가 나오는 것이 아닌가요. 보통 error LNK2005 에러는 제목 그대로 에러 나온놈이 어딘간에 중복 정의가 되었을 때 나오는 에러죠. 그래서 헤더파일 제일 윗 부분을 일단 보니 #pragma once가 잘 있으니까 이건 아닐꺼고 이게 문제였다면 이 파일이 전부터 에러가 났어야 하는데 이번에 함수 4개 추가하면서 나온 에러라 이건 아닐 것이다 하고 자세히 보니...

const D3DPRESENT_PARAME…