gpt4 book ai didi

python-3.x - 发现 stdout 输出的来源

转载 作者:行者123 更新时间:2023-12-04 19:46:47 27 4
gpt4 key购买 nike

我正在使用第三方库,该库将 \n 打印到 stdout 数百次 - 这似乎是他们日志记录中的错误。

发现生成此输出的代码行的最佳方法是什么(我希望它是 python 而不是外部库)?

一些想法:

  • 如何将 \n 字符的显示更改为可识别的内容,例如 A,以便在使用调试器逐步执行时,我可以看到何时输出发生了吗?

  • 每次将字符发送到 std-out 时,我是否可以通过 monkey-patch 低级函数来产生一些输出或调试中断?

最佳答案

你可以尝试超越标准输出:

class StdoutFilter:
def __init__(self, realStdout):
self.realStdout = realStdout

def write(self, text):
if text == '\n': # or some more complicated condition
raise Exception("Newline alert!")

self.realStdout.write(text)

import sys
sys.stdout = StdoutFilter(sys.stdout)

# import the 3rd party library and use it

在此过滤器类中,您可以添加一个计数器并仅在打印了超过 N 个后续换行符后引发异常。异常的堆栈跟踪将揭示恶意打印的来源。

或者您可以在此处放置一个断点,或者将 \n 更改为其他内容。

关于python-3.x - 发现 stdout 输出的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26898636/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com