首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >编程能力突飞猛进的奥秘!戳~

编程能力突飞猛进的奥秘!戳~

作者头像
用户1081422
发布于 2020-04-08 02:26:51
发布于 2020-04-08 02:26:51
40700
代码可运行
举报
文章被收录于专栏:T客来了T客来了
运行总次数:0
代码可运行

目录

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

1 新键盘 and 一个知乎问题

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

我的答案也附属在下面;

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

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

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

2 为什么学会Debug 很重要?

个人认为主要有3点:

会 debug 会 level up 面试手写代码着重考察的能力 工作中提升工作产出的必备能力

3 如何debug?

如下图所示:

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

3.0 选个好的ide

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

3.1 打断点

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

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

3.2 跑起来

1 and 2 方式均可

3.3 控制程序运行流程

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

从左至右:

  1. step over: 当前代码行的执行过程不必细究,直接运行完成后跳到下一行
  2. 使用场景: 当前代码行对debug过程没有任何影响,可以直接运行,且直接跳到下一行

  1. step into: 即压栈的过程,进入函数调用内部,并且如果遇到系统库或第三方库调用也会进入到第三方库函数调用内部;
  2. 使用场景: 进入函数内部,包括自己def 以及 call 第三方的函数;

  1. step into my code: 也是压栈的过程,但是不同于step into,step into my code 只能进入到自己def 的function 中,属于阉割的step into

  1. step out: 即函数调用出栈的操作,
  2. 使用场景: 如果step into 到函数调用较长的函数中,不想一行一行看完所有的函数调用,那么可以直接 step out ,完成当前函数的调用,然后继续调用step over 继续运行程序

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

  1. 如果你有多个断点,只想看断点处的运行结果,则可以直接多次按压 go next breakpoint, 观察变量的输出情况
代码语言:javascript
代码运行次数:0
运行
复制
  1. debug 过程当中,所有变量的变更情况(动态的过程) 可以通过 varibales 变更面板查看

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

4. 再论debug重要性

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

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

如果是我,我会怎么做?

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 T客来了 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
回忆杀:我的编程能力是如何突飞猛进
这篇原本是我之前在知乎上的问答,当时写的比较匆忙,就没有同步,这次跃哥又进行了一小部分的润色,言简意赅地做了一小部分成长的回忆,记录那些年我的努力,寻找记忆力的味道。
程序员小跃
2020/06/17
4510
回忆杀:我的编程能力是如何突飞猛进起来的
这篇原本是我之前在知乎上的问答,当时写的比较匆忙,就没有同步,这次跃哥又进行了一小部分的润色,言简意赅地做了一小部分成长的回忆,记录那些年我的努力,寻找记忆力的味道。
程序员小跃
2020/06/11
4180
使用 Delve 工具调试 Golang 程序
Delve 是一个 go 语言的第三方调试器,github 地址是: https://github.com/go-delve/delve 。Delve 是 GDB 调试器的有效替代品。与 GDB 相比,它能更高的理解 Go 的运行时,数据结构以及表达式。Delve 目前支持 Linux,OSX 以及 Windows 的 amd64 平台。
Go学堂
2023/01/31
1.7K0
还记得你的编程能力什么时候突飞猛进的
今天要介绍的一篇文章是关于CSS层叠上下文的,文章标题【你真的懂CSS 层叠上下文吗】,文章链接:https://cloud.tencent.com/developer/article/2470215。在CSS使用过程中,经常会遇到层叠的情况,这篇文章详细介绍了多种情况下层叠发生时的元素属性,内容丰富。
六月的雨在Tencent
2024/11/23
2210
长篇连载(一)你的编程能力从什么时候开始突飞猛进?
2008年,奥运会那一年,就是高考结束的一年,我考上了湖南的一个二本学校,曾经做的所有梦都在这一刻戛然而止。
艾小仙
2021/03/02
3730
长篇连载(一)你的编程能力从什么时候开始突飞猛进?
你的编程能力从什么时候开始突飞猛进?
我的第一份工作是 Android 攻城师,做了有两年左右,发现自己平时的工作几乎都是在设计页面布局,这不是我理想的工作(我的理想工作是不上班 / 坏笑)。因为经常和 Java 后端人员接触,感觉他们工作挺炫酷的,敲几行代码,在浏览器输入一个地址,就能打开一个自己设计的网页,简直太牛 P 了。因此决定向 Java 后端发展。之后又有爬取数据的需求,有利用业余时间学习了 Python。每当接触一门新的编程语言时,都感觉自己进步飞快。
淡定的蜗牛
2019/11/20
8800
你的编程能力从什么时候开始突飞猛进?
我的编程能力是从什么时候开始突飞猛进的?
这是知乎上一个很火热的话题,它让我的思绪回到了多年前,那个疯狂玩游戏住网吧的少年,那个洗心革面之后疯狂看技术书、疯狂编码的少年,彼时的他绝没有想到能在程序的世界走这么远。
用户6983566
2020/12/03
8731
全栈工程师自述:我的编程能力为什么突飞猛进?| 知乎3千7百赞
两天之内,就引起了150多位用户来分享自身经验。因为话题非常具有干货导向,也引起了大量的围观。
量子位
2019/11/22
5160
全栈工程师自述:我的编程能力为什么突飞猛进?| 知乎3千7百赞
iOS开发 Xcode的各种调试、DEBUG
BUG,简单来说就是程序运行结果与预期的不同,下面来说说Xcode中的DEBUG方法 参考博文 断点调试 普通断点 全局断点 条件断点 1.普通断点 看图 当程序运行到断点处时会停下,然后进行单步
BY
2018/05/11
2.5K0
【linux】gdb
release版本不可被调试,debug版本可以,原因是,debug版本下编译器形成可执行程序的时候会给可执行程序添加调试信息
用户11029103
2024/09/27
3610
【linux】gdb
Xcode Debug 大全
我们如果在一个循环里面使用了断点,如果这个循环执行了100万次,那你的断点要执行那么多次,你不觉得蛋蛋都凉了的忧伤么?所以我们这么做:
零式的天空
2022/03/22
1.4K0
Xcode Debug 大全
使用 Chrome Devtools 调试您的 Node.js 程序
俗话说:“工欲善其事,必先利其器”,调试是每一个开发人员都要遇到的问题,选择一个合适的调试工具也尤为重要。 在 Node.js 开发过程中除了万能的 console.log 之外,本节介绍一个 Node.js 与 Chrome Devtools 结合的调试工具,以后你可以选择使用浏览器来调试 Node.js 应用程序了。
五月君
2020/12/30
3.4K0
使用 Chrome Devtools 调试您的 Node.js 程序
【Linux】调试器-gdb使用
 当我们不加 -g 选项的时候,我们生成的可执行文件的相关符号表中是没有debug信息的。
青衫哥
2023/03/31
3.4K0
【Linux】调试器-gdb使用
万字长文带你掌握 IDEA 2024 的30个Debug调试绝技,让你开发与修复 Bug 的效率提升亿倍
万字长文带你掌握 IDEA 2024 的30个Debug调试绝技,让你开发与修复 Bug 的效率提升亿倍
猫头虎
2024/05/24
3.1K0
万字长文带你掌握 IDEA 2024 的30个Debug调试绝技,让你开发与修复 Bug 的效率提升亿倍
Linux GDB常用命令一栏
Linux GDB 常用命令如下: 1.启动和退出gdb (1)启动:gdb ***:显示一段版权说明; (*** 表示可执行程序名) (2)退出:quit。有的时候输入quit后会出现相关提示:类似于“(y/n)”,输入y 2.显示和查找程序源代码 (1)list :显示10行代码,但是我为什么没有显示成功呢? (2)list 5,10:显示源文件第五行到第十行的代码 (3)list t4.c:5,10:显示源文件中第五行到第十行的代码,在跳是含有多个源文件的次序时使用; (4)list get_sum:
Gxjun
2018/03/26
1.7K0
Linux工具学习之【gdb】
vim 可以编写代码,gcc/g++ 可以编译代码,此时只最后一件神器,就能进行完整的开发工作,那就是通过 gdb 调试代码,毕竟谁都不敢保证自己的代码没有问题,所以就有调试器这种东西帮助我们定位问题,进而解决问题
北 海
2023/07/01
3600
Linux工具学习之【gdb】
【探索 GDB 和 CGDB】:强大的调试工具介绍
🚀GDB(GNU Debugger)是 GNU 项目提供的一种调试工具,用于调试 C、C++ 和其他编程语言编写的程序。它允许程序员查看和控制程序的执行,从而帮助找到和修复程序中的错误。
IsLand1314
2024/10/15
4020
【探索 GDB 和 CGDB】:强大的调试工具介绍
软件测试|Pycharm运行与调试
Pycharm作为集成开发环境,除了可以编写脚本,还可以运行和调试自己的代码,下面就为大家介绍一下pycharm运行和调试代码的功能如何使用。
霍格沃兹测试开发Muller老师
2023/01/06
1.5K0
【Linux】调试工具gdb的使用
在前文,我们已经讲解了vim工具以及gcc/g++的使用,我们可以进行编写代码以及编译代码了,但是还没有学习如何在Linux下对代码进行调试,通过本章的学习,将学会如何使用gdb对代码进行调试。
诺诺的包包
2023/02/27
3.6K0
【Linux】调试工具gdb的使用
深入了解Linux —— 调试程序
但是,如果我们在写代码的时候遇见了错误;但是我们并不知道错误在哪,在windows下,我们可以进行调试来查找代码错误的位置进行修改;我们在linux就只能查看源代码,直接查找错误,这样很麻烦;
星辰与你
2025/03/10
1630
深入了解Linux —— 调试程序
推荐阅读
相关推荐
回忆杀:我的编程能力是如何突飞猛进
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档