dependency walker

황제낙엽 2019.12.30 09:14 조회 수 : 43

sitelink1 http://www.dependencywalker.com 
sitelink2 https://blog.naver.com/jinlee25/40063318415 
extra_vars5  
extra_vars6  

Dependency Walker는 exe 파일과 관련된 dll들의 목록과 그 dll들이 가지고 있는 함수들을 목록을 보여주는 역할을 한다.

 

Dependency Walker로는 exe 파일과 연관된 DLL들을 볼 수 있다고 하였다.

 

DLL 때문에 생기는 문제를 추적하는 데에 Dependency Walker가 큰 도움을 줄 수 있기 때문이다.

 

예를 들자면 이런 것이다.

 

나는 exciting.dll을 greatgame.exe이 참조하기를 바라고 있었다.

 

그런데 내가 exciting.dll을 greatgame.exe가 있는 폴더에 넣지 않았다.

 

그런데 우연의 일치로 exciting.dll이 system32 폴더에 존재하는 바람에 다른 버전의 exciting.dll이 실행되고 있었다.

 

그러다 보니 300번에 한 번씩 프로그램이 꺼지다가 죽는 일이 발생한다.

 

이런 문제를 해결하려면, Dependency Walker를 통해서 이 프로그램이 정확히 어떤 dll을 사용하고 있는지 알아야 한다.

 

 

 

 

0 - Dependency Walker?

 쉽게 이야기해서 프로그래밍이 사용한 DLL 정보와 DLL에 들어있는 함수 중 사용한 함수를 보여주는 툴 (~)

   depen1_jinlee25.jpg

 

 

1- 프로그램위치 (VS 2005기준) – 편하게 아래쪽 그림 참고

 

  depen2_jinlee25.jpg

 

 

 

 

 

2- 그럼 실행해보자 ^0^

(1) 연결된 DLL정보를 볼 프로그래밍을 선택하기 위해  아래 아이콘을 클릭한다.

depen3_jinlee25.jpg

 

 

(2) 연결된 DLL 정보를 볼 프로그래밍을 선택한다

 

depen4_jinlee25.jpg

 

참고로 난 안사람은 안다는 저 흐뭇한 게임의 속을 보려고 한다 **(개인적취향에 존중을)>

 프로그래밍을 선택하고 열기를 누르자!

 

(3) 나온 화면

 

 depen5_jinlee25.jpg

 

 

  잠시 아래 Warning은 무시하자.. 그냥 대충 보니 뭔가 미확인 DLL때문에 빠진 함수가 있다는 말인 것 같다.. 참고로 난 영어 못한다그래서 틀린 해석일 수도 있다는 점 밝힌다ㅡㅡㅋ;

 

 

(4) 자 사용된 DLL과 그 DLL에서 사용된 함수를 봐보자!

 

 depen6_jinlee25.jpg

 

 딱 보니 이 흐뭇한 게임에 사용된 DX9 버전은 9_32 버전이라는 점과 함께 D3DXCreateEffect 사용된것 봐서 쉐이더 HLSL를 사용했다는 것이 보이군요 후후후

 

 

(5) 자 그럼 내 프로그래밍에서 사용된  DLL는 어디에?

depen7_jinlee25.jpg

 

 

파란색 네모에 있는 아이콘을 누르면 바로 DLL 있는 FullPaths 가 표시 된다.

 

(6) 기타

이외에도 여러 기능들이 있는 것 같으니 직접 한번 해보시길

 Dependency Walker에 아쉬운점은 바로 아까 무시한 워닝을 출력하게 한 것처럼

 MS나 공식적인 DLL가 아닌 사용자가 만든 DLL (ex, 게임엔진의 DLL)는 표씨 하지 않는다는 점이다. (어떻게 생각해보면 당연한 것 일수도 있다.)

 

 

(7) 끝으로 프로그램을 배포할 때 무슨 DLL이 사용되었고 어떤 DLL를 포함해야 할지 이 프로그램으로 먼저 파악하고

 아래 같은 상황이 생겨 당황해 하지 않기 바란다..

 

 depen8_jinlee25.jpg