V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
fuckyoudolphin
V2EX  ›  Python

想要追踪一个正在运行的 Python 进程里面的函数调用及代码执行情况

  •  
  •   fuckyoudolphin · 2020-12-18 11:16:34 +08:00 · 2615 次点击
    这是一个创建于 1441 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求有点像精准测试 但没办法在 build 的时候插桩

    想追踪这个已经运行起来的进程 某段时间的代码运行情况,执行了哪些行 哪些方法

    求教 有什么好的办法吗

    9 条回复    2020-12-21 14:59:04 +08:00
    ysc3839
        1
    ysc3839  
       2020-12-18 12:01:23 +08:00 via Android
    方法不知道,我只知道 Visual Studio 可以直接调试一个外部的 Python 进程。
    charexcalibur
        2
    charexcalibur  
       2020-12-18 12:04:33 +08:00   ❤️ 2
    caiji11
        3
    caiji11  
       2020-12-18 13:08:29 +08:00
    VizTracer 试试这个
    zhangkunkyle
        4
    zhangkunkyle  
       2020-12-18 13:17:50 +08:00   ❤️ 1
    pysnooper
    fuckyoudolphin
        5
    fuckyoudolphin  
    OP
       2020-12-18 14:41:39 +08:00
    @charexcalibur 谢谢,但是这个 pyspy 貌似是对帧取样 实现不了对执行的每一行代码的监控
    jones2000
        6
    jones2000  
       2020-12-18 18:10:16 +08:00
    代码打桩, 一般用来做测试代码覆盖率用的。 给一个测试版编译的时候在所有的分支都打上桩 跑完所有的测试, 统计触发了多少桩。应该是在生成 AST 的时候加桩的, 然后再跑。解释性的语言你可以先生成 AST 的时候加桩,然后再把加桩以后的 AST 转成 py. 再跑
    lc1450
        7
    lc1450  
       2020-12-18 18:35:04 +08:00
    最近也遇到类似问题,定时任务卡了好几天,正常情况应该几小时就完成
    strace -p 能看到卡在 futex 系统调用, 但具体卡在 python 代码什么地方看不到, 这种场景用什么工具来看?
    todd7zhang
        9
    todd7zhang  
       2020-12-21 14:59:04 +08:00
    注册 signal ? 接受信号,然后 sys._current_frames().items()拿到 stack, 再 traceback.extract_stack(stack) 拿到
    filename, lineno, name, line
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1084 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 19:45 · PVG 03:45 · LAX 11:45 · JFK 14:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.