自动化运维,你玩转了吗?
pdb工具包,可以帮我们在没有IDE的环境下进行代码调试。
pdb终归是基于命令行交互式的,对于刚接触编程的朋友来说并不友好,并且在日常开发中,如果代码架构略微复杂,或者是引用的第三方库,不太了解具体的实现细节,那么
pdb就不是最合适的调试方法了。
pdb篇中的示例代码为大家讲解
import sys
def foo(num):
ret = []
for i in range(num):
tmp = i ** 2
ret.append(tmp)
return ret
if __name__ == "__main__":
args = sys.argv
result = foo(int(args[1]))
print(args)
在Pycharm中展示如下图

if __name__ == "__main__":时,Pycharm会识别到,并将该行标识为程序入口,用一个绿色的三角形表示。
Debug 'main'就是开启调试的按钮

Debug 'main'按钮

Debug 'main'的按钮



args的长度,就可以点击黄色框中的加号,输入
len(args)即可, 如下图

Debugger调试窗口下,但如果程序中存在打印输出的内容,则需要点击
Console按钮,切换到输出窗口才可以看到输出内容。

| 调试按钮 | 快捷键 | 含义 |
| Step Over | F8 | 步进:执行下一行代码 |
| Step Into | F7 | 步入:执行下一行代码,如果下一行为函数则进入函数 |
| Step Into MyCode | Alt+Shift+F7 | 步入:与Step Into功能类似,但只会进入到自己编写的函数中 |
| Step Out | Shift+F8 | 步出:运行断点后的所有代码,当前如果在函数中,则会返回到上一层 |
| Run to Cursor | Alt+F9 | 执行到光标:一直执行到光标所在行,当前在循环中时,点击一次会执行一次循环 |

args = ['./main.py'],
args的长度只有1,但12行却要访问
args[1],表示访问
args的第二个元素,很明显会发生数组越界,所以程序抛出了异常。


python main.py后面的内容,所以这里输入3,等价于
python main.py 3
i = 0, 计算得到的
tmp = 0



from flask import Flask
app = Flask(__name__)
if __name__ == "__main__":
app.run()
Tips:Flask是使用Python编写的轻量级Web框架,马上我们会出相应的专题
app = Flask(__name__)的作用是创建一个应用对象实例。
__name__),让
flask.helpers.get_root_path函数通过传入这个名字确定程序的根目录,以便获得静态文件和模板文件的目录。
__name__确定程序根目录的。

Flask()函数中

super().__init__()这一行,这一行表示对父类进行初始化,所以再次点击Step Into步入父类中(由于此处函数参数过长,代码存在换行,所以需要点击多次步入按钮,直到跳入父类中即可)。

root_path参数,所以当前root_path为None,这样就会用到
flask.helpers.get_root_path()根据传入的
import_name来确定项目根目录。
import_name就是初始化类时传入的
__name__。至于
get_root_path()函数中具体如何实现的就留给大家自己探索。

yuefeiyu1024
添加作者微信加入专属学习交流群,获取更多干货秘籍
文章转载自python玩转自动化运维,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




