티스토리 뷰

반응형

주말에 시간이 나서 업무를 보던 중에

Exception Filter 발생 시에 덤프를 뜨거나 로그를 남기거나 주요 자원을 남기는 건 알겠는데,

 

생각해보면,

그런 일이 있을 때마다 바뻐 죽겠는데 

일단 누구 모듈 문제인지 스레드 문제인지 알아야되는데

덤프를 받아서 까고 이러고 싶지가 않은 것이다. 

특히나 특정 환경에서 문제가 생기면... 환장한다.

 

그래서 내가 필요한 것은 [어떤 모듈]에서 그리고 [어떤 스레드]에서 인지를 알고 싶은 것이었다.

https://github.com/JochenKalmbach/StackWalker

 

GitHub - JochenKalmbach/StackWalker: Walking the callstack in windows applications

Walking the callstack in windows applications. Contribute to JochenKalmbach/StackWalker development by creating an account on GitHub.

github.com

callstackwalker를 처음 봤을 때는 

그냥 callstack을 이용하는거구나 exception filter에 이용하면 좋겠구나

라는 생각만 했는데 예제 코드를 까보니

 

내가 생각했던 코드가 들어있었다.

exception filter에 쓸 수 있는 예외 처리 시 마지막 죽은 부분의

콜스택을 쓰는 코드가 있었다.

 

유레카 - 쓸만하구나

그러나 이 코드를그대로 쓰지는 않을 것 같다.

아마도 dbghelp에 콜스택walker 자체가 있으니

그것을 분석해서 쓸 예정이다.

 

어쨋든 이렇게 쓸 수 있다는 걸 보니 즐겁다.

 

현업에서 덤프를 보는게 가장 확실하지만

특정 스레드와 콜스택 그리고 대략적인 정보를

미리 알 수 있으면 유관 부서에 준비 시키기도 좋고

(긴급할 때는 사이트에서 덤프 받는데 하루 걸리는 것조차 용서되지 않는다)

받자마자 바로 교체 테스트를 할 수 있으니 좋을 것이다. 

 

 

반응형
댓글