2017-04-04 7 views
0

에 대한 몇 가지 디버깅 물건을 인쇄 소스 코드 라인을 찾아이 문자열을 표준 출력에 인쇄됩니다 장소 찾을 수 없습니다 :내 앞에 내가 큰 코드베이스가 표준 출력

[{}] 

나는 그것을 재현 할 수 있습니다, 그러나 관련 코드 라인을 검색하는 것은 지금까지 성공하지 못했습니다.

디버깅을 돕기 위해 실수로 개발자가 추가 한 것 같습니다.

이 문자열을 stdout으로 내보내는 일치하는 코드 줄을 찾는 방법에 대한 단서가 있습니까?

답변

1

당신은이 라인은 다음과 같이 방출됩니다 경우, 예외를 제기 할 관련 소스 코드 라인을 찾을 수 있습니다

class WrapperOfStdout(): 
    def __init__(self, old_stdout): 
     self.old_stdout=old_stdout 

    def write(self, data): 
     assert not '{}' in data, data 
     return self.old_stdout.write(data) 

이 스크립트로이 래퍼를 추가하고 주요 직후 표준 출력 조기 (가능한 포장) :

Traceback (most recent call last): 
    File "/home/u/src/foo-bar/foo_bar/utils/common.py", line 94, in issue_to_tar 
    meta = issuemeta(request, issue).encode('utf8') 
    File "/home/u/src/foo/foo/views/issue/view.py", line 198, in issue_meta 
    div = index_model.view(issue, request) 
    File "/home/u/src/foo/foo/utils/indexutils.py", line 96, in view 
    form = form_cls(request, issue, None, prefix=prefix) 
    File "/home/u/src/foo-x/foo_x/logic/forms.py", line 115, in __init__ 
    print(fake_initial) 
    File "/home/u/tmp/issue_to_tar.py", line 13, in write 
    assert not '{}' in data, data 
AssertionError: [{}] 

번호 :

sys.stdout=WrapperOfStdout(sys.stdout) 

는이 같은 예외를 얻을 것이다 w 원하지 않는 결과가 나오는 곳을 보게됩니다. 이 경우에는 logic/forms.py 라인 115입니다.