[oeasy]python0007-调试程序_debug
调试程序
回忆上次内容
py 的程序是按照顺序执行的
- 是一行行挨排解释执行的
- 程序并不是数量越多越好
- kpi也在不断演化
编辑
- 写的代码越多
- 出现的bug就越多
- 什么是bug
- 如何找bug呢?
尝试调试
- 那 python 程序到底是怎么一步步解释执行的呢?
print("1982------Guido in cwi")
print("1995------Guido in cnri")
print("2000------Guido in beopen")
print("2005------Guido in google")
print("2012------Guido in dropbox")
print("2020------Guido in microsoft")
- 首先要有这个guido.py
- 然后放到网上系统的剪贴板上
编辑
尝试调试
- 粘贴到vim中
编辑
- 原来是一把执行
- 现在可以一步一步调试运行
pdb3 guido.py
- 使用
pdb来进行调试
-
pdb的意思是python'sdebugger
- 为什么要逐步运行呢?
逐步运行
- 由于程序不知道哪里出的问题
- 所以一步步来执行
编辑
- 一步步调试运行的目的是去除
bug
- 也就是
debug
- 可是为什么把程序错误叫做
bug 呢?
help
- 不知道怎么办的时候
- 就要求助(help)
编辑
- 他给了我很多的命令
- 还说可以help 一下具体 topic
- 查看你哪个topic呢?
具体帮助
- 查看帮助的帮助
编辑
- 没有参数的话
- 显示所有命令
- 有一个参数
- 显示这个参数的帮助
- h(elp) 的缩写是 h
- elp可以省略
编辑
- 这并不难 h h
- 再看看其他单词
list
- l(ist)
- 可以列出上下文11行的程序
- 缩写是l
编辑
- 当前行前面有个箭头 ->
使用命令
编辑
- 确实可以看到上下文
- ->代表着当前运行到了哪里
- 怎么往下走呢?
next
- n(ext)
- 可以往前走一句
- 缩写是n
编辑
- 试一下
编辑
- 把1982年输出了
- 然后当前行来到了1995年
- 如何判断1995年在整个程序中的位置呢?
执行
- l(ist)
- 可以列出当前行的上下文
编辑
- 在第2行
- next就会到第3行
- 当然也可以一路next下去
一路next
编辑
- 我们一路next
完成调试
- 一路
next 下去 - python 解释器
- 就是这么一步步地解释执行的
编辑
- 确实是顺序执行的
- 一行行挨排儿执行的
- 我们就一步步地把bug找出来
- 就像找凶手一样!
最真实的解谜游戏
- debug是我见过最真实的解谜游戏了
- 比什么剧本杀好玩多了
- 一步步地分析
- 找不到罪魁祸首的时候
编辑
- 需要冷静地分析
- 找到罪魁祸首的时候
- 那种快乐太真实了!!!!
- 终于来到最后一行
- 如果到这里再next
- 会发生什么呢?
最后一步
- 执行完最后一句之后
- 就会返回(return)到python
- 然后返回(return)到shell
编辑
- 如果这个时候已经到了程序的尽头
- 再next会发生什么呢?
绕圈
- 到头了就又重来
- 就会重新执行这个文件
- 就圜道了
编辑
- 可是这个和虫子(bug)有什么关系呢?
第一个错误 bug
编辑
- 历史上第一个程序错误是
- 这只虫子
bug - 飞进继电器(relay)计算机(computer)里面来
- 导致当时的继电器短路
- 所以后来
- 管错误叫做bug
- 管调试程序错误叫做
debug
总结
py 文件的程序是按照顺序
- 一行行挨排解释执行的
- 我们可以
pdb3 hello.py 来对程序调试
- 顺序执行
- 程序在文本中从上到下是一行行写的
- 解释器是从上到下是一行行解释的
- 调试也是从头到尾一行行执行的
编辑
- 但是这一行行的是在有点慢啊
- 毕竟我们都是经历过万行代码的人了
- 那得按10000次的n才能执行完啊?
- 有快点的方法吗?
- 我们下次再说!
- 蓝桥->用户登录
- github->GitHub - overmind1980/oeasy-python-tutorial: 良心的 Python 教程,面向零基础初学者简明易懂的 Python3 入门基础课程。在linux+vim生产力环境下,从浅入深,从简单程序学到网络爬虫。可以配合蓝桥云上实验环境操作。
- gitee->oeasy教您玩转python教程: 面向零基础初学者的简明易懂的 Python3 入门课程,对没有编程经验的同学也非常友好。在vim下从浅入深,逐步学习。从基础入门学习到爬虫。
- 视频->[oeasy]教您玩转python零基础学python入门教程(合集)_哔哩哔哩_bilibili
[oeasy]python0007-调试程序_debug的更多相关文章
- VS2015下如何用编译、调试程序。
VS2015下如何用编译.调试程序. (通过实践给出截图) 安装步骤: 下载安装网址[VS2015下载地址](http://www.ithome.com/html/win10/164028.htm) ...
- #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #endif
情况1:#ifdef _DEBUGvirtual void AssertValid() const; //assert(断言)valid(有效的,正确的)virtual ...
- 使用NSAssert()和NSParameterAssert调试程序
NSAssert: NSAssert()只是一个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属于Bug,满足条件返回真值,程序继续运行,如果返回假值,则抛出异 ...
- Android 软件开发之如何使用Eclipse Debug调试程序详解及Eclipse常用快捷键(转)
1.在程序中添加一个断点如果所示:在Eclipse中添加了一个程序断点 在Eclipse中一共有三种添加断点的方法 第一种: 在红框区域右键出现菜单后点击第一项 Toggle Breakpoint 将 ...
- Android成长日记日记-Debug调试程序
Debug调试程序: 1. 调试是程序员无法逃避的工作.调试方法有很多种,但归根结底,就是找到印发错误的代码 2. Debug调试可以快速准确的定位到错误问题的位置,以及它的调用关系 3. Debug ...
- 用GDB调试程序(一)
http://blog.csdn.net/haoel/article/details/2879 用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或 ...
- 怎样在myEclipse中使用debug调试程序?
怎样在myEclipse中使用debug调试程序? 最基本的操作是: 1.首先在一个java文件中设断点,然后debug as-->open debug Dialog,然后在对话框中选类 ...
- 慕课网-安卓工程师初养成-5-4 使用 Eclipse 调试程序
来源:http://www.imooc.com/video/1627 IDE断点调试功能 比如 之前的程序,写错了,变成如下 package com.imooc; import java.util.S ...
- delphi使用outputdebugstring调试程序和写系统日志
delphi使用outputdebugstring调试程序和写系统日志 procedure TForm1.btn1Click(Sender: TObject); begin OutputDebugSt ...
- Eclipse中用Logcat调试程序
调试程序的一种方法是用Logcat程序,在Eclipse中windows->show view->other->android->logcat可打开. 然后程序加入androi ...
随机推荐
- Laravel框架中数据库分表时Model使用方法
前言: 0.最近在使用laravel框架做MySQL分表的时候经过实践和踩坑,总结了以下3种可行的分表方法,亲测可用. 1.本人公司做的是SaaS系统,以店铺为维度.店铺id(shop_id) 命名规 ...
- Istio(三):服务网格istio可观察性:Prometheus,Grafana,Zipkin,Kiali
目录 一.模块概览 二.系统环境 三.可观察性 四.指标 4.1 代理级指标 4.2 服务级指标 4.3 控制平面度量 五.Prometheus 5.1 安装Prometheus 5.2 部署示例应用 ...
- .net Mvc5Webapi接口接收参数为null的一种情况分享
同样的前后端项目,其他接口用post接收自定义对象形式的参数,是能成功接收的.在这个前提下,出现某个接口接收的参数为null或值全是默认值,可能的原因是这样: 前端定义的参数的字段比后台定义的dto对 ...
- 轻松绕过 Graphql 接口爬取有米有数的商品数据
轻松绕过 Graphql 接口爬取有米有数的商品数据 有米有数数据的 API 接口,使用的是一种 API 查询语言 graphql.所有的 API 只有一个入口,具体的操作隐藏在请求数据体里面传输. ...
- 初识c语言—c语言的初步认识和一个简单的程序
C语言是什么 编程语言(编程语言是控制计算机的一系列指令,他又固定的格式和词汇.同时也叫计算机语言(计算机语言是,人和计算机通讯的语言)) C语言的特点 语言简洁,紧凑,使用方便 运算符丰富 数据类型 ...
- LeetCode 332. Reconstruct Itinerary重新安排行程 (C++/Java)
题目: Given a list of airline tickets represented by pairs of departure and arrival airports [from, to ...
- 三维API sheder 基础
这个shader 是靠三维数学 影响 二维像素 导致像素颜色改变 它是每个像素走一遍脚本算法 写的时候注意 语言格式 写错了 shader脚本是不能用的,根本就不好使这个 可以用区域 用xyz y为0 ...
- nfs笔记整理
NFS---共享存储系统 #network file system 网络文件系统 #NFS主要使用在局域网下,让不同的主机之间可以共享文件.或者目录数据.主要用于linux系统上实现文件共享的一种 ...
- 雪花算法(SnowFlake)
引言 唯一ID可以标识数据的唯一性,在分布式系统中生成唯一ID的方案有很多,常见的方式大概有以下三种: 依赖数据库,使用如MySQL自增列或Oracle序列等. UUID随机数 snowflake雪花 ...
- 一行超长日志引发的 “血案” - Containerd 频繁 OOM 背后的真相
案发现场:混沌初现 2024年6月10日,本应是平静的一天.但从上午 9 点开始,Sealos 公有云的运维监控告警就开始不停地响.北京可用区服务器节点突然出现大量 "not ready&q ...