반응형
예외 발생없이 우수한 스택 추적 인쇄
내 클래스의 인스턴스 변수 중 하나에 문제가 발생했습니다. 변수를 속성으로 생성 액세스 할 때마다 해당 지점까지 이어지는 모든 코드의 스택 추적을 인쇄하여 어디에서 엉망인지 알 수 있습니다. 예외가 발생하지 않을 때 스택 추적을 어떻게 인쇄합니까? 예외가 있는지 알고 있습니다 traceback.format_tb(sys.exc_info()[2])
.
또한 유용한 것은 마지막 3-4 레벨 만 인쇄하는 것입니다. 처음 몇 개는 그다지 흥미롭지 않을 것이기 때문입니다.
>>> def f():
... def g():
... traceback.print_stack()
... g()
...
>>> f()
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in f
File "<stdin>", line 3, in g
편집 : 당신은 또한 사용할 수있는 extract_stack 조각을, (예를 들어 stack[5:]
처음 5 개 수준의 제외에 대한) 및 사용 format_list를 인쇄 준비 트레이 스 택스를 위해 ( '\n'.join(traceback.format_list(...))
)
표준 출력으로 인쇄하는 대신 로거에 필요한 경우 다음을 사용할 수 있습니다.
''.join(traceback.format_stack())
traceback.format_stack ()은 stacktrace를 형식화 된 메뉴 목록으로 반환하려는대로 할 수 있습니다. stacktrace의 마지막 몇 가지 요소를 얻으려면 다음을 수행 할 수 있습니다.
''.join(traceback.format_stack()[-N:])
여기서 N은 관심있는 수준의 수입니다.
ReferenceURL : https://stackoverflow.com/questions/3925248/print-python-stack-trace-without-exception-being-raised
반응형
'ProgramingTip' 카테고리의 다른 글
C ++는 재귀 깊이를 제한 깊이? (0) | 2021.01.07 |
---|---|
CUDA는 재귀를 지원합니까? (0) | 2021.01.07 |
node.js 소스 파일을 이용하는 방법이 있습니까? (0) | 2021.01.07 |
폴더 계층 구조에서 모든 git 콘텐츠를 한 수준 위로 이동해야합니까? (0) | 2021.01.07 |
Windows 8에서 라이브 타일은 어떻게 만들어 집니까? (0) | 2021.01.07 |