场景说明
经过gevent和monkey补丁之后的应用程序,断点是无法命中,调试是无法工作的。
解决方案
方案一:
Pycharm中按图1找到设置界面,添加启动服务端的环境变量如图2,增加GEVENT_SUPPORT=True即可解决,如果服务启动的时候需要根据不同的环境变量读取不同的配置文件,也可以按如图2设置添加。
方案二:
1、方案一虽然可以实现要求,但是比较麻烦的是如果我们要调试多个文件,每个文件都要做同样的事,那么有没有一种一劳永逸的办法呢?我们可以在Pycharm -> Preferences -> Build, Execution, Deployment -> Python Debugger中进行设置,如图3勾选上Gevent compatible即可在整个项目中Debug时都可以使用。
2、如果想实现项目全局根据不同的环境变量读取不同的配置文件,我们可以编辑~/.bash_profile文件增加导出该环境变量:export QLAAS_CFG=/Users/xxx/Develop/qlaas/qlaas.prod.yml
3、针对想调试有参数的cli、test等文件时,可以如图4在Script parameters中给携带上。
补充部分:编辑模板配置
针对我们在项目中每次debug时都有共同运行时环境,比如是脚本cli文件或者是测试用例pytest文件,如果每次debug都给对应的文件进行配置也是挺麻烦的,针对这种情况Pycharm提供了模版配置如图5点击Edit configuration templates后我们可以针对python或者python tests添加公用的配置如图6所示。
总结
Debug是非常重要的工具,有助于我们更好的阅读代码及查看代码底层实现,使用好这个工具可以使我们事半功倍。