문제

비즈니스 요구 사항에 맞게 TRAC를 확장하는 상당한 양의 작업을 시작하려고합니다. 지금까지 나는 Pythonwin과 이제 NetBeans 6.5를 개발 환경으로 사용했습니다. 이들 중 어느 것도 내가 작업중 인 플러그인을 디버깅하는 방법을 제공하지 않는 것 같습니다.

나는 Python을 완전히 익숙하지 않습니다 따라서 개발 환경을 설정하지 않았을 것입니다.

내가 분명한 것을 놓치고 있습니까? TRAC 로그에 디버그 메시지를 인쇄하는 데 의지 해야하는 것은 약간 고풍스러운 것 같습니다. 이것이 제가 현재 디버깅하는 방법입니다.

도움이 되었습니까?

해결책

래퍼 WSGI 스크립트를 만들어 디버거로 실행할 수 있습니다. 예를 들어:

import os
import trac.web.main

os.environ['TRAC_ENV'] = '/path/to/your/trac/env'

application = trac.web.main.dispatch_request

from flup.server.fcgi import WSGIServer
server = WSGIServer(application, bindAddress=("127.0.0.1", 9000), )
server.run()

디버거 에서이 스크립트를 실행하고 LightTPD를 이와 같은 사소한 구성으로 웹 애플리케이션의 프론트 엔드로 사용할 수 있습니다.

server.document-root = "/path/to/your/trac/env"
server.port = 1234
server.modules = ( "mod_fastcgi" )
server.pid-file = "/path/to/your/trac/env/httpd.pid"
server.errorlog = "/path/to/your/trac/env/error.log"
fastcgi.server = ( "/" =>
  (( "host" => "127.0.0.1",
     "port" => 9000,
     "docroot" => "/",
     "check-local" => "disable",
  ))
)

Debugger에서 FCGI WSGI 래퍼를 실행하고 플러그인에 중단 점을 설정 한 다음 웹 페이지를 엽니 다.

다른 팁

일반적으로 우리는 먼저 단위 테스트를합니다.

그런 다음 문제를 진단하기 위해 로그 메시지를 작성합니다.

우리는 일반적으로 파이썬 스크립트가 더 큰 제품에 포함 된 상황에서 종종하기가 어렵 기 때문에 디버깅에 크게 의존하지 않습니다.

나는 그것을 발견했다 winpdb 괜찮은 파이썬 디버거입니다.

그러나 S.Lott가 지적했듯이, 프로젝트가 더 큰 프로젝트에 포함될 때 디버거는 그다지 유용하지 않을 수 있습니다.

TRAC에는 Python 코드의 좋은 예가 포함되어 있으며이를 가이드 라인으로 사용하여 버그를 피할 수 있습니다. 코드를 테스트하고 Python을 처음 접하는 것이기 때문에 자주 수행하십시오 ... 디버거가 필요하지 않다는 것을 알게 될 것입니다.

단위 테스트의 경우 확인하십시오 Pyunit.

런타임에 멋진 TRAC 메시지 상자를 추가하는 것이 가장 유용하다는 것을 알았습니다.

from trac.web.chrome import add_notice
...
def any_function_somewhere(self, req, ...anyother args...):
    ...
    var = ...some value...
    add_notice(req, "my variable value I am tracing %s" % var)

때로는 로그를 읽는 것보다 더 편안합니다. 실행중인 함수가있는 경우에만 작동하지만 req arg.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top