禁用 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 -x
或 bash -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 出这些调用的人起作用;关于拥有和控制硬件的任何人能够拥有和控制软件的通常警告适用。
我有 python 个脚本,我想禁用跟踪。通过跟踪,我的意思是 运行:
的能力python -m trace --tracing thescript.py
在 bash 中,如果您想查看脚本的内部工作原理,只需 运行 以下内容即可:
sh -x thescript.sh
或
bash -x thescript.sh
但是,如果 thescript.sh
包含一个 set +x
;这将阻止外部 sh -x
或 bash -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 出这些调用的人起作用;关于拥有和控制硬件的任何人能够拥有和控制软件的通常警告适用。