Contents

1-2-7TMS观看记录7

Debugging and Profiling

debugging

  • printf
  • log,可以通过设置重要级来筛选你要看的内容

debugger

  • python -m ipdb bubble.py 打开python调试器
    • l:list
    • s:step
    • restart
    • c:continue
    • p arr:print array
    • q:quit
    • b:breakpoint(设置断点)
  • GDB:debugger for c&c++,actually any binary process.
  • pyflakes:python静态分析工具,不需要等待数据读取进内存
  • mypy:和上面一样的报错,但是它还会额外检查数据类型错误,
    • 已经有很多语言的分析器,比如下面的英语分析器
  • writegood:英语的静态分析器https://mayue-1312060474.cos.ap-chengdu.myqcloud.com/picgo/The_Missing_Semester%E8%A7%82%E7%9C%8B%E8%AE%B0%E5%BD%957_image_1.png
  • real time;user time;system timehttps://mayue-1312060474.cos.ap-chengdu.myqcloud.com/picgo/The_Missing_Semester%E8%A7%82%E7%9C%8B%E8%AE%B0%E5%BD%957_image_2.png这里时间很多都是在等待另一端服务器的响应https://mayue-1312060474.cos.ap-chengdu.myqcloud.com/picgo/The_Missing_Semester%E8%A7%82%E7%9C%8B%E8%AE%B0%E5%BD%957_image_3.png这是挂梯子的我,说明很多时间都花费在了user time,大概是因为小猫咪把时间都花在了本地转发上吧(瞎说…)

profiler 分析器

跟踪分析器:运行代码的同时有一个类似于编写代码的程序运行,告诉你运行了什么代码,花费了什么时间等等
采样分析器:跟踪分析器相对的还是会多占用cpu,采样分析器每隔一段时间暂停程序,比如10ms,然后告诉你现在运行到哪里,什么函数花费多少时间等等

不只有cpu分析器还有内存处理器、IO分析器等等

  • perf

可以怎么在程序运行之前就知道这个程序运行多久时间并进行改良而不是是傻傻的等待十分钟的运行吗?

每个程序都是不一样的,你只能进行一些粗略的估计,比如读取的时间过久,http访问的时间过长,一些数学运算,你实在不知道时间的话你可以使用logging查看过程值有一个大概的预计

当然你也可以用HTOP来查看cpu占用,如果是0那程序当然有问题了



Flag Counter