我面前有一个巨大的代码库,找不到将这些字符串打印到stdout的地方:
[{}]
我可以重现它,但到目前为止搜索相关的代码行还没有成功。
我想这是由开发人员意外添加的,以帮助调试。
有任何线索如何找到将此字符串发送到stdout的匹配代码行?
答案 0 :(得分:2)
如果此行如下所示,您可以找到相关的源代码行引发异常:
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)
将此包装器添加到您的脚本中,并尽早包装stdout(在main之后不久):
sys.stdout=WrapperOfStdout(sys.stdout)
你会得到一个像这样的例外:
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: [{}]
现在您可以看到不需要的输出发生的位置。在这种情况下,它是logic/forms.py
第115行。