美文网首页
Debug心得分享

Debug心得分享

作者: markfork | 来源:发表于2020-01-17 15:08 被阅读0次

目录

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

1 新键盘 and 一个知乎问题

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


知乎问题

我的答案也附属在下面;

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

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

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


    image.png

2 为什么学会Debug 很重要?

个人认为主要有3点:

会 debug 会 level up

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

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

3 如何debug?

如下图所示:


如何debug

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

如何debug

3.0 选个好的ide

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


选择好的ide

3.1 打断点

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


打一个断点

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

3.2 跑起来

debug 运行起来

1 and 2 方式均可

3.3 控制程序运行流程

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

debug 工具栏

从左至右:

Step over icon
step over: 当前代码行的执行过程不必细究,直接运行完成后跳到下一行
使用场景: 当前代码行对debug过程没有任何影响,可以直接运行,且直接跳到下一行
Step into icon
step into: 即压栈的过程,进入函数调用内部,并且如果遇到系统库或第三方库调用也会进入到第三方库函数调用内部;
使用场景: 进入函数内部,包括自己def 以及 call 第三方的函数;
Step into my code
step into my code: 也是压栈的过程,但是不同于step into,step into my code 只能进入到自己def 的function 中,属于阉割的step into
step out
step out:  即函数调用出栈的操作,
使用场景: 如果step into 到函数调用较长的函数中,不想一行一行看完所有的函数调用,那么可以直接 step out ,完成当前函数的调用,然后继续调用step over 继续运行程序
go next breakpoint
官网上没有对当前按钮的官方说明,官网文档:
https://www.jetbrains.com/help/pycharm/debugging-your-first-python-application.html
如果你有多个断点,只想看断点处的运行结果,则可以直接多次按压 go next breakpoint, 观察变量的输出情况
variables 变更面板
debug 过程当中,所有变量的变更情况(动态的过程) 可以通过 varibales 变更面板查看

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

4. 再论debug重要性

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

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

如果是我,我会怎么做?

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

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

相关文章

  • Debug心得分享

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

  • debug心得

    iis下会有网站日志(想要知道一个请求到底来没来,看日志即可,想要知道一个文件到底有没有被访问,其实不用file_...

  • Java Debug心得

    案发现场: future task提交到线程池执行; future中task未执行完毕; future内task有...

  • 微信分享闪一下没有弹出朋友列表

    将分享调整为debug模式调试注意点:分享链接是否正确

  • iOS Debug心得 (持续更新)

    最近在维护一个内部比较混乱的APP,Debug的时候遇到很多比较痛苦的地方, 因此做一个Debug记录,对以后的开...

  • 春花秋月何时了

    分享心得

  • 我为什么要分享"学习心得"?—写心得的&qu

    在分享几篇书籍阅读的心得,几篇课程参与的心得,几篇聆听演讲的心得后,开始有人问我:”为什么你要分享这些心得?”对喔...

  • 2019-07-25工作总结

    1. 经验[源哥重要心得]: 看源码时, 最好是用debug看. 因为这样可以知道字段 , 属性, 方法传了什么值...

  • weex启动weex debug失败心得

    1.配置weex幻境,进行新升级的千牛的调试行为经过各种采坑,先总结一下配置weex环境遇见的坑和解决办法: <1...

  • 猿的诗

    黑夜里 code code code debug debug code code debug code debug...

网友评论

      本文标题:Debug心得分享

      本文链接:https://www.haomeiwen.com/subject/dhlqzctx.html