Memory Leak 검출해 주는 오픈소스

예전에 VC6.0을 사용할때 코딩하고 Debug로 컴파일하면 어느 지점에서 메모리 누수(Leak)가 발생하는지 IDE의 출력창에서 알려주었다. 원래 VC6.0이 그랬는지, 아니면 나도 모르게 뭔가를 설치해서 그랬는지는 기억나지 않지만 말이다. 그런데 VS2003 이후로는 메모리 누수에 대한 보고를 해주지 않는 것이다. 난 한동안 아.. 메모리 누수가 발생하지 않게 잘했나보다 했는데.. 그게 아니란것을 알고 난후, 메모리 누수를 검출해주는 툴을 찾다가 괜찬은 녀석 둘을 만났다.

http://www.codeproject.com/tools/visualleakdetector.asp
http://www.codeproject.com/tools/leakfinder.asp

간단히 소개를 하면, 첫번째는 라이브러리를 Link해주고 vld.h라는 헤더파일 하면 include 해주면 메모리 누수 검출의 준비가 끝난다. 누수의 결과는 IDE 창에서 해주게 되는데 아래의 코드를 작성하고 컴파일하면 IDE의 출력창에 누수의 지점과 내용을 출력해준다.

#include "vld.h"

int main()
{
    char *pChar = new char[100];

    return 0;
}

이것은 필자가 VS6.0에서 경험했던 바로 그것이였다. 그러나 단점은 프로젝트의 코드생성이 다중스레드DLL이냐, 그냥 다중스레드냐에 따라 다른 라이브러리를 링크해줘야 한다는 것과 CRT 메모리에 대한 누수만을 검출해주며 COM 메모리 누수는 검출해주지 못한다. 즉, COM군의 함수중에 메모리를 할당해주는 CoTaskMemAlloc 함수에 대한 메모리 누수는 검출해주지 못하는 것이다. 그러나 IDE와 연동되어 IDE의 출력창에서 누수에 대한 정보를 더블클릭하면 누수지점의 코드로 커서가 이동하는 기능은 상당히 매력적이다.

끝으로 두번째는. 하나의 헤더파일과 그에 대한 하나의 소스파일로 구성되는 간단한 구조인데, StackWalker.h 파일을 include 해주고 누수검출 시작과 끝을 지정하는 함수를 호출해줌으로써 메모리 누수 검출의 준비가 끝나게 되어 무척 사용하기가 쉽다. 게다가 CRT 메모리 뿐아니라 COM 메모리에 대한 누수검출까지 가능하다. 또한 메모리 누수에 대한 정보는 3가지로 구분되는데, 간단한 SImple 모드, 좀더 자세한 Advanced 모드, XML 모드이다. 모두 외부 파일을 통해 누수 정보를 개발자에게 Report한다. 하지만 첫번째 소개했던 누수툴과는 달리 IDE와 연동을 지원해주지 않는다는 단점이 있다.

플렛폼이 Windows라는 범위에만 초점을 맞춰볼적에 비록, 최근의 추세가 Garbage Collection에 의한 자동 메모리 정리 기능이 있어, 메모리 누수에 대한 염려가 많이 줄기는 하였지만, .NET에서 지원하는 C++/CLI는 CLR 메모리만이 아니라, CRT, CLR, Stack 메모리에 까지 접근이 가능하므로 메모리 누수에 대해 주의를 요한다는 점에서 아직까지 이러한 메모리 누수 검출 도구는 유용하다고 하겠다.

[참고] 아래 글의 “줘도 못먹는”에 해당하는 오프소스가 아닙니다.

줘도 못 먹는..

요즘 그렇다. 줘도 못 먹고 있는 그런 상태. 잘 써먹으라고 Open Source로 제공되는, 하지만 다소 불친절하긴 하지만.. 여튼 분명이 실행되는 거고, 써먹기만 하면 내가 원하는 결과물 그 이상을, 또한 GIS 개발자로써 두고 두고 잘 써먹을 수 있는 것이다ㅡ!!

하지만…. 이번주 어제와 오늘, 이틀째 제대로 써먹으려고.. 먹어보지도 못하고 바라만 보고 있는 상태다.. 사실은 예전부터 가끔 분석해 보았던 녀석이였다. 그때도 만만치 않은 놈이란 것을 알았다지만.. 하지만 종국엔 정말 필요해질때 신기하리만치 발휘되는 “이해력”으로 잘 써먹을줄로만 알았다. 그런데 여전이 지금도 이해조차 않된다.. 줘도 못 먹는다.. 경험상 이런 경우.. 분명 이놈은 대박이 분명한 거다.


DCinside의 쿨겔러리에서 redgore님의 “배한척”

다시 원점으로 돌아가서 살펴보아야 겠다. 하나 하나 관련 정의부터 확실이 이해해야 겠다. 그러나 계획대로 할애된 시간은 3일. 그러니까 내일이 마지막 날이다.. 내일은 꼭! 분석 必 해서 멋지게 사용해보자ㅡ!

추천하는 그림편집 Tool, Paint.NET

회사에서 정품 소프트웨어 사용을 권장하고, 간혹 불법소프트웨어 단속이 뜨는 관계로 컴에는 꼭 필요한 “정품” 소프트웨어만이 깔린다. 하지만 개발하다가 그림편집이 필요할 경우에 예전에 쓰던 포토샵이 없어서 다소 불편했는데, 어제 회사 동료분이 좋은 툴을 소개해주었다.


.NET으로 개발되었으며, 레이어 개념과 여러가지 Filter 기능, 이미지 회전, 자르기, 색조 변경 및 이미지 크기 변경 등, 최소한 내가 포토샵에서 필요로 했던 기능은 모두 있다. 소스까지 공개하면서 완전 공개라고 한다.

Paint.NET 다운로드 사이트

불과 5, 6개월전만 해도 내게 .NET은 무겁고, 웹개발에서나 써먹는, 하지만 언젠가는 배워야할 부담으로만 느껴졌으나, 최근에는 상당한 호감과 강한 호기심으로 느껴진다. 여튼, 강력히 추천하는 툴ㅡ!

영화 “괴물”을 보고

반미 영화이다.. 아니다.. 하는데, 영화 “괴물”은 분명 반미 영화가 맞다. 하지만 일부러이든, 아니든… 어설픈 반미 영화이다. 사회학과를 나온 감독 봉준호의 대가리에서 어설픈 설정은 다소 이해하기 힘든점을 감안할때 다분이 의도된 일부러의 “어설픈” 반미 영화가 아닌가 싶다.

이 영화의 압권은 영화 초반에 괴물이 한강둔치에서, 그것도 벌건 대낮에 인간 먹이 사냥을 멋드러지게 하는 것인데… CG 효과이긴 하겠지만 정말 잘~ 만들었다!! 라는 느낌은 모두다 공감할 것이다.

혹자는 마지막 장면에서 남주(배두나)의 火활에 맞아 괴물이 불에 타는 장면이 어설펐다는 것에 실망했다는데, 내 소견으로는 그 정도면 꾀나 잘만들었다고 생각한다. 휘발위에 온몸이 적셔진 괴물에 불을 붙이면 영화에서 그러한 불이 붙게 된다. 활~ 활 타오는 불이 붙지 못한다. 특히나 이미 괴물은 물에 충분이 젖셔진 상태에서 불이 붙었기 때문에 활활 타오르지 못한다. 감독 봉준호의 괴물에 대한 불타는 불꽃 효과의 선정에 대한 탁월한 감각에 갈채를 보낸다. 우연이든.. 우연이 아니든말이다….

영화를 감상하며 강두(송강호)의 머저리 같은 역에 화가 났다. 효자동 이발사의 주연으로 나왔던 무기력하고 머저리 같은 송강호. 비록 이 두영화가 감독은 달랐지만 어쩜 그리 머지리 같고 무기력하기는 똑 같았을까… 제발 다음 역에서는 조금이라도 스마트한 면모를 보여줬음 좋겠다. 살인의 추억에서 송강호는 어땠난 회상해 본다. 그러고 보니 살인의 추억에서와 괴물에서 박해일이 등작한다. 살인의 추억에서의 박해일은 강간살인범으로써 등장하고 괴물에서는 흔해빠진 4년제 대학을 나와서 백수로 놀고 먹으며 사회를 비관하며 술에 찌들어 사는 놈팽이로 나오지만 강한 자기 주관을 가진 한 멋진(?) 사내로 등장한다. 막판에 괴물에게 화염병을 멋드러지게 던질때 마지막 찰라에 왠 삑사리 쇼를 보여주는 바람에 베리긴 했지만 말이다. 덕분에 남주(배두나)의 멋진 양궁 실력에 우리의 괴물이 최후를 맞이 했다!

이 영화에서 괴물의 의미는 과연 무엇일까? 용산미군기지에 있는 미군 군의관의 지시에 한국인이 포르말린 수십(수백?) 병을 하수구에 방류시킴으로써 한강에 건대한 돌연변이 도룡용(?)이가 생겨난다는 설정이다. 여기서 괴물은 간접적으로는 미군의 찌질이 군위관에 의해 탄생했지만 직접적으로 한국인에 의해 탄생한 것이다. 이후에 세계에서는 한국에서는 자체적으로 괴물을 처지하지 못한다는 결론을 내리고는 다시 미국의 엘로(Yellow)..? 머시기를 사용해서 괴물을 처치하려고 하는데, 많은 시민들이 환경을 엄청나게 훼손시키는 이 엘로 머시기의 사용을 반대한다. 미국에서 (상당한 압박의) 제안을 했을 것이지만, 그 선택은 자국 한국의 선택이였다. 결과적으로 이 머시기를 투하해서 괴물의 잠시 무기력하게 만들긴 했지만… 영화에서 보듯 그 머시기로 인해 그 근처의 사람들의 구멍이란 구멍에서는 피가 나더라… 이 영화를 보면서 괴물의 탄생과 환경 오염에 대한 탓을 미국에 돌릴 수는 있겠지만… 이 모든 최종적인 선택인 우리 한국인들의 몫이다. 그 어떤것도 탓할 것은 없다. 최소한 이 영화에서는 말이다. 제발 탓하지 말자… 쓰잘데기도 없는 남탓은 말이다..

가족의 아버지 박희봉(변희봉님 역)의.. 뭘랄까…. 정부에 대한 복종적이고 헌신적인 모습을 보인, 하지만 가족중에 가장 처음 괴물에게 죽임을 당하고야 마는.. 그리고 두째 아들 남일(박해일)의 제법 스마트한 활약.. 하지만 선배로부터의 현상금에 대한 욕심으로 배신을 당하기는 하지만… 여튼 그의 활약을 통해 딸 남주(배두나).. 정말 영화에서 배두나는 이뻤다.. 난 왜 이런 스턀의 여자 배우에게 끌리는 걸까.. 어찌 되었든 그녀의 불타는 마지막 활시위에 의해 괴물은 불에 타게 되고.. 불에 타 괴로워 하는 괴물은 불을 끄기 위해 다시 한강속으로 뛰어 들려고 하지만 역시.. 주인공 중에 주인공 강두(송광호)의 제지로 끝내 괴물은 입수를 할 수 없게 되어 죽게된다…. 여기서 이 영화에서 주목해야할 점은 일련의 모든 괴물 퇴치의 액션은 군, 경찰, 정부가 아닌 힘도 없을 것같은 한 가족에 의해 이루어 진다는 점이다. 가족… 딸.. 조카… 손녀가 괴물에게 납치되었고 살아있다는 희망속에서, 그 엄청난 무언가의 힘… 감히 사랑이라는 힘으로 괴물을 처치한 것이다.

감독 봉준호가 말하고자 하는 것은 무엇인가… 반미. 하지만 (일부러) 어설프게 반미에 대한 상황을 펼쳐 놓았다. 그리고 가족. 한강 둔치에서 매점이나 하면서 그저 한없이 보통스럽기만 한.. 하루 하루를 살아가는 가족… 어느 누구, 어느 단체의 도움.. 도움은 커녕 방해만 받기 일수였다.. 이런 상황에서 한 가족은, 한 가족 구성원을 구출해 내기 위해서 목숨을 걸고 괴물과 맞서 싸우는 것이다. 감독 봉준호가 말하는 것은 보일듯 말듯… 않보이는 그만인… 이미 누구나 다 아니까.. 하는 미국에 대한 책망은 그 뒤로 하고라도….. 그가 보여주고 싶은 것은 가족에 대한 절실한 사랑이였다. 가족에 대한 사랑…… 진정 그가 보여주고 싶었던 것은 말이다..