需求有点像精准测试 但没办法在 build 的时候插桩
想追踪这个已经运行起来的进程 某段时间的代码运行情况,执行了哪些行 哪些方法
求教 有什么好的办法吗
1
ysc3839 2020-12-18 12:01:23 +08:00 via Android
方法不知道,我只知道 Visual Studio 可以直接调试一个外部的 Python 进程。
|
2
charexcalibur 2020-12-18 12:04:33 +08:00 2
|
3
caiji11 2020-12-18 13:08:29 +08:00
VizTracer 试试这个
|
4
zhangkunkyle 2020-12-18 13:17:50 +08:00 1
pysnooper
|
5
fuckyoudolphin OP @charexcalibur 谢谢,但是这个 pyspy 貌似是对帧取样 实现不了对执行的每一行代码的监控
|
6
jones2000 2020-12-18 18:10:16 +08:00
代码打桩, 一般用来做测试代码覆盖率用的。 给一个测试版编译的时候在所有的分支都打上桩 跑完所有的测试, 统计触发了多少桩。应该是在生成 AST 的时候加桩的, 然后再跑。解释性的语言你可以先生成 AST 的时候加桩,然后再把加桩以后的 AST 转成 py. 再跑
|
7
lc1450 2020-12-18 18:35:04 +08:00
最近也遇到类似问题,定时任务卡了好几天,正常情况应该几小时就完成
strace -p 能看到卡在 futex 系统调用, 但具体卡在 python 代码什么地方看不到, 这种场景用什么工具来看? |
8
alvie 2020-12-18 18:48:52 +08:00
|
9
todd7zhang 2020-12-21 14:59:04 +08:00
注册 signal ? 接受信号,然后 sys._current_frames().items()拿到 stack, 再 traceback.extract_stack(stack) 拿到
filename, lineno, name, line |