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
pppguest3962
V2EX  ›  Python

PyCharm 的 DEBUG,能不能 不打断点去 step by step,而实时知道在哪一步吗?

  •  
  •   pppguest3962 · 2020-10-26 10:51:55 +08:00 · 2467 次点击
    这是一个创建于 1250 天前的主题,其中的信息可能已经有所发展或是发生改变。

    程序是流程式执行的,冗长的样子就不说了,
    大概知道是哪个区间环节死循环(假死),但是。。。。。(这里省略)
    大概位置打了个断点,然后下一步点到手指都不舒服了,还是没能到那一步。。。
    请问 PyCharm 应该如何操作,不打断点,在出现假死的时候,能够实时知道现在在哪个语句位置?

    11 条回复    2020-10-26 20:27:23 +08:00
    janus77
        1
    janus77  
       2020-10-26 11:05:46 +08:00
    2 分查找法了解一下
    tempdban
        2
    tempdban  
       2020-10-26 11:14:46 +08:00 via Android   ❤️ 1
    这你 print 大法不就知道了?
    jerome233
        3
    jerome233  
       2020-10-26 11:15:34 +08:00
    可以使用 Step Into My Code, 不用手动标记断点位置, 只在自己的服务代码内跳转, 不走标准库 /三方库的代码, 按快捷键一会就会定位到死循环的代码了
    nifury
        4
    nifury  
       2020-10-26 11:29:41 +08:00
    可以强行 pause 的吧,然后看下调用栈就知道了
    iConnect
        5
    iConnect  
       2020-10-26 11:42:54 +08:00 via Android
    先肉眼估摸出错可能性比较大的区域,print 几个值和类型出来,基本上抓几轮下来就能定位准了。生产环境才是比较麻烦的,基本上要去找日志看了。
    pppguest3962
        6
    pppguest3962  
    OP
       2020-10-26 11:55:20 +08:00
    @nifury 的确是,我 pause 下来了,但看到的位置是自带库里面的一段位置,我试着按了 DEBUG 菜单上的步出,步入几个 option,也没能发现,自己的程序是哪一行召唤到这个位置的。。。。
    TimePPT
        7
    TimePPT  
       2020-10-26 11:56:48 +08:00 via Android
    PySnooper - Never use print https://github.com/cool-RR/PySnooperfor debugging again
    TimePPT
        8
    TimePPT  
       2020-10-26 11:57:18 +08:00 via Android
    https://github.com/cool-RR/PySnooper
    PySnooper - Never use print for debugging again
    nifury
        9
    nifury  
       2020-10-26 11:58:12 +08:00
    @pppguest3962 #6 啊这,左下角不是有调用栈么,翻一翻就能看到程序调用的地方了呀
    k3Sv1
        10
    k3Sv1  
       2020-10-26 12:48:59 +08:00 via iPhone
    你在陷入循环的时候 pause 或者直接中断不就能看到调用栈了吗
    no1xsyzy
        11
    no1xsyzy  
       2020-10-26 20:27:23 +08:00
    左下调用栈会用颜色区分你的代码和外部库的代码的…… 还是用 ignore 的颜色显示 .gitignore 掉的代码?没有在 .gitignore 以外用过第三方库所以不知道……
    至于进 C 的情况直接显示 Frame 不可用。
    而且可以跳到任何一层调用栈看变量和进 Console 执行代码……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5282 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 09:12 · PVG 17:12 · LAX 02:12 · JFK 05:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.