년도별 글 목록: 2006

윈도우에서 디버깅시 유용한 유틸리티 : TaskManager Extension 2.0

요즘은 윈도우용 프로그램 개발을 잘 안하지만, 예전 경험을 살려 적어봅니다.
알려줬더니 옆에 네오술군이 프로그램 디버깅하는데 도움이 되었다하네요 ^^

소개드릴 프로그램은 Task Manager Extension 2.0 이라는 조그만 유틸리티입니다.
원버전은 CodeGuru 에서 공개된거 같은데 이게 CodeProject 쪽에는 업그레이드되서 등록되어 있네요
위 링크에서 프로그램 바이너리를 받아 실행하면 화면에는 아무런것도 나오지는 않습니다. (소스코드도 제공됩니다.)
작업관리자를 실행해보면 아래와 같이 화면이 바뀌어 있습니다.

Task Manager Ex 실행후

위와같이 메뉴중간에 Extension 이란 메뉴가 추가되고 여러가지 기능들이 포함됩니다.
메뉴 이름만 봐도 아실수 있는기능들이라 딴거는 직접 해보심 될듯 합니다.
이중에 제가 주로 사용했던 기능은 아래 기능입니다.

프로세스에서 마우스 오른쪽 버튼

디버깅용 프로세스를 선택한후 마우스 오른쪽 버튼을 누르면 위와 같은 메뉴가 나옵니다.
즉 해당 프로세스가 사용하는 파일,모듈(DLL),핸들 과 그 프로세스의 하위 윈도우와 쓰레드만을 보여주는 기능입니다.
예를 들어 핸들을 선택해보면 다음과 같은 화면이 나옵니다.

핸들 표시

그 프로세스가 열고 있는 모든 핸들의 이름과 타입을 리스팅해서 보여줍니다.
제가 전에 하던 전화서비스용 음성처리보드 같은경우 각 음성채널을 오픈해서 핸들로 관리를 합니다.
이건 파일을 검색하거나 소켓을 사용하는등 윈도우의 모든 프로그램이 비슷합니다.
멀티스레드 같은경우 몇백개 부터 수천개의 핸들을 관리하는 경우가 생기는거죠. 시스템상 문제는 없습니다.
(윈도우 자체가 스레드 또는 프로세스상 몇개의 핸들을 관리할수 있게 해주는지는 잘 모르겠습니다 ^^;)

문제는 이런 핸들을 열고 잘 안닫거나 하는 상황이 생길때 문제가 발생한다는 것입니다.
물론 소멸자에서 처리를 해주던 예외처리를 하던 개발자는 항상 다 닫아주려고 하지만 세상일은 모르는것이죠 ^^
제 경험상 유명한 오픈소스 코드를 가져다 사용했던 프로젝트에서도 원 소스내부에 핸들누수 현상이 나서
문제가 발생한걸로 봐선 이는 누구나 겪을수 있는 문제라고 생각합니다.

중요한 팁은.. 이 핸들을 보는 창이 멀티로 열린다는 것입니다. 프로그램 실행도중에 이 핸들창을 여러개 띄우면
이전시점부터 현재시점까지 늘어난 핸들이 어떤것인지 파악할수 있다는것입니다. 물론 문자열 검색도 가능하구요.

멀티쓰레드 프로그램을 개발하거나 다양한 파일/소켓/핸들등을 여는 프로그램이 동작중에 이상현상이 발생한다면
한번 테스트 해보실만 합니다. ^^

돼지갈비와 냉면

연휴중에 집에서 쉬면서 TV 를 보는데 가수 윤종신이 나와서 우스개로 한 얘기중에
강호동이랑 고기집에 가서 똑같이 먹었다고 하는 얘기가 나왔다. 무지 많이 먹는다는 거였는데 중요한거 아니라 패스~

보통 고기집에 가면 고기를 시켜서 배를 채우고 다 먹고나서 냉면을 시켜먹는데 강호동은 독특하게 냉면을 처음에 시켜서
돼지갈비랑 같이 먹는다는것이었다. 그앞에서 강호동 본인한테 물으니 자기는 그렇게 먹는걸 좋아한단다.
신기하다~ 라고 생각하고 있다가 어제 와이프랑 고기집에 가서 똑같이 해봤다.

호~ 신기하게 맛있다. 돼지갈비 먹다보면 조금 느끼하게 되는데, 이게 시원한 냉면육수랑 합쳐지면서
상큼한 맛이 난다. 고기랑 냉면가락을 같이 씹는맛도 나쁘지 않다.
단점이라면.. 냉면육수에 돼지기름이 좀 뜬다는거지만, 잘 떠서 앞접시에 먹으면 보기 흉할정도는 아니다.
갈비먹으러 갈때마다 시도해볼 생각이다.

덧1. 제닉군한테 말해주니 이미 알고 있었다면서 칡냉면이랑 먹으면 더 맛있다고 한다.
덧2. 문제는 갈비가 맛있으면서 냉면도 맛있는집은 찾기가 힘들다고도 한다. ㅡ.ㅡ
덧3. 이 글 쓰면서 소도둑이 생각났지만 엄청 오른가격과 그 집 냉면맛이 그리 뛰어나지 않았던걸로 기억이 나서 패스 ㅡ.ㅡ;;