禁用 python 脚本跟踪,相当于在 bash 中关闭 -x

disabling python script tracing, equivalent of turning off -x in bash

我有 python 个脚本,我想禁用跟踪。通过跟踪,我的意思是 运行:

的能力
python -m trace --tracing thescript.py

在 bash 中,如果您想查看脚本的内部工作原理,只需 运行 以下内容即可:

sh -x thescript.sh

bash -x thescript.sh

但是,如果 thescript.sh 包含一个 set +x;这将阻止外部 sh -xbash -x 在包含 set +x.

的行之后显示脚本的任何进一步内部工作

我想要 python 也一样。我只知道 python -m trace --tracing 是查看 python 脚本内部工作原理的唯一方法。我相信有很多不同的方法可以做到这一点。我在这里寻找的是一种可靠的方法,用于停止可以对 python 脚本执行的任何类型的跟踪。

我知道如果用户有适当的权限,他们可以编辑脚本并注释掉任何用于禁用跟踪的内容。我对此很清楚。但我还是很想知道。

即使粗略地看一下标准库中的 trace.py,它所使用的接口,以及禁用它们的机制,一目了然:

#!/usr/bin/env python
import sys, threading
sys.settrace(None)
threading.settrace(None)
print("This is not traced")

当然,这不会(也不能)对任何想要修改实时解释器以 NOP 出这些调用的人起作用;关于拥有和控制硬件的任何人能够拥有和控制软件的通常警告适用。