본문 바로가기

툴-팁

[StackOverflow|WinDbg] windbg의 STACKIMMUNE 은 무슨 뜻인가?

반응형

원문 : http://stackoverflow.com/questions/9065975/what-does-windbgs-primary-problem-class-stackimmune-mean


!analyze 의 원리를 잠깐 설명하면,


!analyze 는 access violation (또는 SEH exception, C++ exception, integer overflow, division by zero 등등)의 원인을 찾기 위해서 예외를 던진 쓰레드의 콜스택 위에 무엇이 있는지 확인한다. 그러나, 모든 스택 프레임이 의미있는 것은 아니다.


예를 들어, C++ 예외일 경우 가장 위에 있는 kernel32!RaiseException 과 your_module!__exception_handler3 가 스택 가장 위에 있겠지만, 이런 프레임은 문제의 직접적인 원인일 가능성이 낮기 때문에 스킵되어야 한다. !analyze 는 더 흥미로운 스택프레임까지 가기 위해서 많은 프레임을 스킵해야 한다. 이 스택 오버플로우 질문의 예에서는 문제가 되는 코드까지 약 40 프레임을 넘어간다.


STACKIMMUNE 은 콜스택의 모든 프레임이 스킵되었다는 것을 나타낸다. 이것은 스택이 손상되었거나, 심볼이 잘못되었을 때 나타날 수 있다. 심볼이 잘못된 것이라면 !reload /i 를 사용하여 미스매치 에러를 무시해야 할 것이다.

728x90