> 백엔드 개발 > 파이썬 튜토리얼 > 실시간 스택 추적을 사용하여 실행 중인 Python 애플리케이션을 디버깅하는 방법은 무엇입니까?

실시간 스택 추적을 사용하여 실행 중인 Python 애플리케이션을 디버깅하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-10-28 18:02:29
원래의
397명이 탐색했습니다.

How to Debug Running Python Applications with On-the-Fly Stack Traces?

실시간 스택 추적을 사용하여 실행 중인 Python 애플리케이션 디버그

간헐적으로 애플리케이션이 정지되는 경우 근본 원인을 해결할 때 좌절감을 느낄 수 있습니다. Python은 실시간 스택 추적을 생성하는 메커니즘을 제공하므로 현재 실행 중인 코드를 검사하고 문제 지점을 식별할 수 있습니다.

신호 처리를 사용한 솔루션

실시간 스택 추적을 얻으려면 다음 코드 활용을 고려하십시오.

<code class="python">import code, traceback, signal

def debug(sig, frame):
    d={'_frame':frame}         # Allow access to frame object.
    d.update(frame.f_globals)  # Unless shadowed by global
    d.update(frame.f_locals)

    i = code.InteractiveConsole(d)
    message  = "Signal received : entering python shell.\nTraceback:\n"
    message += ''.join(traceback.format_stack(frame))
    i.interact(message)

def listen():
    signal.signal(signal.SIGUSR1, debug)  # Register handler

listen()</code>
로그인 후 복사

사용법:

  1. listen()을 호출하여 신호 처리를 활성화합니다. .
  2. kill과 같은 도구나 Python 코드(os.kill(pid, signal.SIGUSR1))를 사용하여 실행 중인 프로세스에 SIGUSR1 신호를 보냅니다.

이렇게 하면 Python이 트리거됩니다. 현재 스택 추적으로 콘솔을 실행하고 변수를 탐색할 수 있습니다. 실행을 재개하려면 Ctrl-D를 누르세요.

추가 옵션

백그라운드 프로세스를 디버깅하려면 Python Cookbook 레시피에 제공된 파이프 기반 솔루션을 사용하는 것이 좋습니다.

위 내용은 실시간 스택 추적을 사용하여 실행 중인 Python 애플리케이션을 디버깅하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿