Debug心得分享

目录

  • 一个知乎问题?
  • 为什么学会Debug 很重要?
  • 如何debug-python为例?
  • 再论debug的重要性

1 新键盘 and 一个知乎问题

为什么写这篇博客? 因为我刚买了新键盘,迫不及待想体验下打字6的飞起的感觉,嗯,新键盘还不错。
前几天看到在知乎上看到一个问题:


2836699-8a1db63d111c8eb4.png
知乎问题

我的答案也附属在下面;

估计你我都有这种感觉:做业务似乎不需要太多的debug,简单的增删改查为啥需要debug呢? 不是信手拈来。简单是显而易见的,不过长此以往往往会觉得做的东西没什么挑战性,每天的工作就是简单重复,循环经验,码码砖,所以外界都讲我们是码农。打住,真的是这样吗?

程序员的关键词应该是创造,而且是高质量、高速创造、时间不等人啊,这一切的基石即是debug
我的回答当中侧重3个方面:

  1. 习得抽象能力;
  1. 1 通过读源码、熟悉数据结构、熟知数据结构的应用场景 来习得;
  1. 2 要做的好,需要debug。


    2836699-df8a7eac374730d6.png
    image.png

2 为什么学会Debug 很重要?

个人认为主要有3点:

会 debug 会 level up

面试手写代码着重考察的能力

工作中提升工作产出的必备能力

3 如何debug?

如下图所示:


2836699-4b439227b0ad2af4.png
如何debug

接下来以pycharm为主,演示下如何习得debug能力:

2836699-b5f8a5aa1b0d6abb.png
如何debug

3.0 选个好的ide

选择一个好的ide,会事半功倍,推荐使用 jetbeans 全家桶


2836699-80f20e3e5e4780e1.png
选择好的ide

3.1 打断点

打断点是个技术活,有没有感觉复杂程序的断点其实比较难确定打点的位置(打点位置的设定方法我在思维导图中有提及,得多 debug 各种难易程度的程序,找找感觉):


2836699-182852b90a817a49.png
打一个断点

程序很简单,即遍历输出arr,断点打在function test_0() 调用的位置

3.2 跑起来

2836699-f6f72c667efc71b3.png
debug 运行起来

1 and 2 方式均可

3.3 控制程序运行流程

控制程序运行流程在 pycharm 中也有利好的工具可以用,如下图所示:

2836699-528174899f9f4f05.png
debug 工具栏

从左至右:

2836699-cc8165aabea7ce9d.png
Step over icon
step over: 当前代码行的执行过程不必细究,直接运行完成后跳到下一行
使用场景: 当前代码行对debug过程没有任何影响,可以直接运行,且直接跳到下一行
2836699-977a9c19e64db269.png
Step into icon
step into: 即压栈的过程,进入函数调用内部,并且如果遇到系统库或第三方库调用也会进入到第三方库函数调用内部;
使用场景: 进入函数内部,包括自己def 以及 call 第三方的函数;
2836699-79761f550f0b7773.png
Step into my code
step into my code: 也是压栈的过程,但是不同于step into,step into my code 只能进入到自己def 的function 中,属于阉割的step into
2836699-6fd3acc5378f2462.png
step out
step out:  即函数调用出栈的操作,
使用场景: 如果step into 到函数调用较长的函数中,不想一行一行看完所有的函数调用,那么可以直接 step out ,完成当前函数的调用,然后继续调用step over 继续运行程序

2836699-ddeb07a77ff96209.png
go next breakpoint

官网上没有对当前按钮的官方说明,官网文档:
https://www.jetbrains.com/help/pycharm/debugging-your-first-python-application.html

如果你有多个断点,只想看断点处的运行结果,则可以直接多次按压 go next breakpoint, 观察变量的输出情况
2836699-d3cf85f8f873f2e7.png
variables 变更面板
debug 过程当中,所有变量的变更情况(动态的过程) 可以通过 varibales 变更面板查看

多练习,可以找到debug的乐趣,这是一种习得能力;

4. 再论debug重要性

假如有现在一种场景,你新接了一个项目,这个项目没有做好项目传承-即没有文档 ,日志也惨不忍睹,毫无规范可言,(不考虑办公网络的复杂性,如代码在本地不能调试)你会怎么做?

先骂娘->看代码(要么睡着,要么怒火中烧)
结果是两三天过去了代码还没看明白? (简单代码可以走查,复杂代码需要debug,跑起来你才知道发生了什么)

如果是我,我会怎么做?

  1. git clone 源码;
  2. 问相关派发任务的相关人,项目的详细背景,项目启动的入口地址,如果相关人离职了,或者相关人根本不知道这个事情,我觉得此地不宜久留;
    2836699-df9924b0c5f03f15.png
  3. 如果2 进行的很顺利,剩下的就是自己的事情了,debug,了解整个项目的运行流程;
  4. 及时跟相关人沟通对项目的了解情况;
  5. 了解的差不多了,开干。自己推到重来,或者重构,都是自己的事情了 。

如果有更好的方式,请留言沟通哦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值