2011-07-27 2 views
18

실행중인 Python 데몬 프로세스가 수행중인 작업을 Linux에서 확인하는 방법이 있습니까? 즉, 코드를 인스트루먼트하지 않고 종료하지 않고? 가급적이면 모듈의 이름과 현재 실행중인 행 번호를 얻고 싶습니다.실행중인 프로세스 확인 : 장비되지 않은 Python 프로그램의 스택 추적 인쇄

strace, pstack 및 gdb와 같은 기존의 디버깅 도구는 Python 코드에별로 유용하지 않습니다. 대부분의 스택 프레임은 PyEval_EvalFrameEx 및 PyEval_EvalCodeEx와 같은 인터프리터 코드의 함수를 포함하고 있습니다. 실행이 .py- 파일에 있다는 힌트는 제공하지 않습니다.

A password should be set to secure debugger client-server communication. 
Please type a password:mypassword 

는 당신이 winpdb 시작할 수 : 암호를 설정 한 후,

rpdb2 -d -r script.py 

다음 :

답변

2

winpdb하지만이 작업을 수행하기 위해, 당신은 파이썬 과정이 방법을 시작해야 attach to a running python process 당신을 수 있습니다 파일> 첨부 (또는 파일> 분리)를 선택하십시오.

6

Showing the stack trace from a running Python application의 답변 중 일부는이 상황에서 적용 할 수 있습니다 :

+2

Pyrasite는 잘 작동합니다. 팁 덕분입니다! – johndodo

+0

/proc/sys/kernel/yama가 존재하지 않습니까? 왜 – zephor

0

lptrace이 정확히 수행합니다 바로 후드한다 Pdb 4를 사용하여 IDE, 내에서 nning 파이썬 프로세스는이 블로그 항목을 참조하십시오. 실행중인 Python 프로세스에 연결하고 시스템 호출을 위해 strace처럼 현재 실행중인 함수를 표시 할 수 있습니다. 다음과 같이 부를 수 있습니다 :

[email protected]:/vagrant$ sudo python lptrace -p $YOUR_PID 
fileno (/usr/lib/python2.7/SocketServer.py:438) 
meth (/usr/lib/python2.7/socket.py:223) 

fileno (/usr/lib/python2.7/SocketServer.py:438) 
meth (/usr/lib/python2.7/socket.py:223) 
... 

gdb를 실행해야합니다. 모든 서버 시스템에서 사용할 수는 없습니다.