2010-12-30 8 views
3

Java/C# 예외에서 스택/함수 추적이 제공된다는 사실은 정말 유용합니다. C++에서이 작업을 수행하는 편리한 방법이 있습니까? 아니면 모든 메서드/함수에 추가 데이터를 구워야합니까?C++ 예외에서 스택 추적 얻기

+0

Duplicate ?? : http://stackoverflow.com/questions/3222890/call-stack-for-exceptions-in-c – bcsanches

답변

1

대부분의 디버거는 호출 스택을 볼 수 있도록 예외가 발생할 때마다 프로그램을 일시 중지하도록 설정 될 수 있습니다 (예외 또는 예외가 처리기가없는 경우).

코드가 예외 클래스를 throw하는 경우에만 you can put code for dumping the call stack in those classes constructors을 제어하십시오.

+0

이것은 디버깅 중에가 아닌 예외를 로깅하기위한 것입니다. –

+0

@ 존, 두 번째 문장 – Muggen

+0

@ 존 : 두 번째 단락은 그것에 관한 것입니다. 실제로 제가 링크 한 전체 질문은 그것에 관한 것입니다. – sharptooth

0

예외에 메타 데이터를 추가하려는 경우 boost exception handling을 사용해보십시오. boost :: exception은 throw 된 후에 예외에 정보를 추가하는 것을 허용합니다.

0

일부 OS API는 스택 추적을 제공합니다. Windows API에 스택 추적을 수행 할 수있는 StackWalk64 또는 그와 비슷한 것이 있습니다.

그러나 그런 일에 의존 할 수 없다면 디버그 빌드를 제공하거나 수동으로 수행 할 수 있습니다.