范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

你初学编程的时候是怎么提高自己的Debug能力的?

  作为一名IT行业的从业人员,也是一名老程序员。现在主要在从事产品研发及项目管理工作,所以我来探讨一下这个问题。什么是Bug
  Bug一词的英文翻译为"臭虫子"或"虫子"。但是现在,我们认为是在电脑系统或者程序中,隐藏着一些未被发现的缺陷或漏洞问题,称之为Bug。
  什么是Debug
  Debug是排除故障、排除问题的意思。
  怎么提高自己的Debug能力的?
  首先,良好的编码习惯和逻辑思维能力,对Bug有预见判断的能力。
  作为程序员,应该有一个良好的编程习惯,不仅需要有良好的编码格式、命名规范,更为需要的是对于业务逻辑,实现时有良好的架构结构、数据结构、业务结构、程序安全等等方面的考虑。
  其次,问题错误定位能力。
  对于已发生的问题或bug进行分析、日志分析、业务逻辑分析、数据分析等等,对问题或bug进行初步定位。问题初步定位之后,在相关的程序节点进行输出或日志处理,不断的对问题进行跟踪和处理。
  最后,对发生的Bug有感知能力。
  当一个Bug出现的时候,优秀的程序员能根据Bug发生的前提和Bug发生的时间点、程序中的位置,很好的感知到Bug可能发生在哪一个函数或者哪几个函数中。
  这些方法做着做着就习惯了或"不断能成功解决出现的问题或bug",谈不上坚持,最终成了喜欢的自己。
  Debug的十八重境界:
  第一重:Debug应用程序,需要源代码,依赖集成开发环境(IDE)下断点来调试。
  第二重:Debug应用程序,需要源代码,只需要调试器下断点,即可调试。
  第三重:Debug应用程序,需要源代码,不需要调试器,打Trace来调试。
  第四重:Debug应用程序,只用肉眼浏览源代码,便可定位Bug、并做修复。
  第五重:Debug应用程序,不需要源代码,但是需要崩溃转储文件,依赖调试器来调试。
  第六重:Debug应用程序,不需要源代码,不需要转储文件,不需要调试器,只通过问题症状,便可定位Bug。
  第七重:在第六重的基础上,开发热补丁。
  第八重:Debug内核态程序,需要源代码,打Trace来调试。
  第九重:Debug内核态程序,需要源代码,使用调试器来调试。
  第十重:Debug内核态程序,用肉眼浏览源代码,便可定位Bug、并做修复。
  第十一重:Debug内核态程序,不需要源代码,但是需要崩溃转储文件,依赖调试器来调试。
  第十二重:Debug内核态程序,不需要源代码,不需要转储文件,不需要调试器,只通过问题症状,便可定位Bug。
  第十三重:Debug BIOS/Bootload程序,需要源代码,利用超级终端来打Trace调试。
  第十四重:Debug BIOS/Bootload程序,需要源代码,使用JTAG+超级终端或者MultiICE来调试。
  第十五重:Debug BIOS/Bootload程序,需要源代码,只用肉眼浏览源代码,便可定位Bug、并做修复。
  第十六重:Debug BIOS/Bootload程序,不需要源代码,使用JTAG+超级终端或者MultiICE来调试。
  第十七重:使用逆向分析工具,进行逆向工程,定位Bug,并作补丁修复
  第十八重:自行开发逆向分析工具,定位Bug,并作补丁修复
  自行对照,看看达到第几重境界。
  此外在前七重,根据鄙视链,还分成好几级:
  COM+/DCOM组件调试 > COM组件调试 > EJB调试 > 云原生调试 > DLL/.a调试 > 桌面可执行程序调试 > Web调试 ……
  我做的是编程底层,写单片机程序。在调试功能或者查找Bug的时候,Debug功能简直就是神器,可以让你看到单片机是如何一步步执行程序的,变量值和当前的寄存器值都可以通过窗口看到。配合断点的使用,调试起来非常方便,很容易找到代码的问题所在。
  对于比较主流的单片机,如ST、NXP、Microchip、MSP等,都有专用的IDE,如KEIL和IAR等。这两款软件都易上手、直观、人性化。以IAR为例,和大家分享一下Debug方法。1.编译并Download程序
  程序编译没有问题后,可以通过Projcet-->DownLoad and Debug下载运行或者通过快捷键Ctrl+D。如下图。
  2.设置断点
  程序在全速执行时,碰到断点就会停下来,所以在需要调试的地方设置一个断点可以让程序停下来方便观察变量或者寄存器的状态。只需要在代码编辑区左侧鼠标左键点击一下就可以。如下图。
  程序运行到断点的位置后,可以进行单步调试,程序就可以一步步的执行,我们可以很方便的观察到程序的执行顺序。3.观察窗
  将鼠标停留在变量上,可以观察此时的变量值,但是不直观。IDE一般都有Watch Window,还是实时观察窗。
  可以将全局变量添加到观察窗里观察变量值。普通的观察窗只有在程序停止时才能刷新变量值;而实时观察窗可以实时的显示变量值。4.观察Memory存储区
  Debug时,还可以查看单片机的存储区,在调试Flash和Bootloader时非常实用,如下图所示。
  Debug可以让我们看到单片机是如何执行的,可以帮助我们检查逻辑的严谨性,调试代码非常好用。
  想要获得更多关于单片机、电子电路的知识,关注我吧。
  每一种编程语言的Debug都不一样,我就以DELPHI的代码例子说一下。
  procedure TForm1.Button1Click(Sender: TObject);
  var s:string;
  i:integer;
  begin
  Try
  s:="a";
  i:=strtoint(s);
  except
  raise;//如果有错返回错误信息
  end;
  end;看错误信息
  当你执行上面的代码,把字符转化为整数的时候,就会产生错误英文信息。
  这种信息一眼看过去,大概就知道他的意思,在开发环境的情况下显示出来,同时告诉你是在那一行代码的BUG。
  如果不是在开发环境下,设计程序的时候,对于一些容易出错的代码,必须加上犯错保护,同时把那个错误信息显示出来。如下图
  这样在程序运行的过程中,一看就知道问题所在。内存错误
  这一类的错误是很难追踪,就是你最终到了你也看不懂。这个时候你就要靠经验了,一般来说,程序在读取内存地址冲突时候造成的。多写代码,多观察
  任何程序都有BUG,只要你多写代码多观察,对于任何一个编程工具来说,他的错误都容易掌握。但如果你单纯理论上学习,没有实战过系统项目,那肯定是掌握不了DEBUG的方法的。
  1.尽量写更细粒度的函数,按照功能划分,对每个函数进行debug,如果逻辑复杂就需要通过单元测试来定位问题,列举出所有边界情况,进行一一测试
  2.如果想知道运行时各变量变化情况,则需要使用断点调试功能,一般用idea自带的断点调试或者使用gdb
  3.肉眼debug也是相当需要的,能肉眼看出的问题就不要浪费时间去做1.2步骤
  良好的编码格式规范和逻辑实现结构善于打印log或者使用相关工具敢于猜测,多打断点
  从实际经历和心得体会来回答这个问题,希望对想学习或者正在学习的朋友有帮助。
  初级阶段,熟悉需求。
  要提高Debug能力,应当熟悉需求,把握好功能实现的方案和思路。经常使用的Debug手段有:单步调试,代码断点和数据断点,串口信息打印。这三大手段要相互交替使用,灵活使用,反复使用。总体来说,以代码和过程为中心点,围绕功能和实现方法进行调试。
  中级阶段,熟悉架构。
  这个阶段需要对系统和模块有所了解,对任务和线程有所了解,依靠的手段除了初级阶段的三种方式之后,更多的需要对整个系统的架构和功能模块有一定的了解和把握能力,把问题框到所用的架构中去定位和分析,学会让代码在脑海中试跑,适当地大胆地猜测问题出处,通过裁剪或者替换或者条件等多种方式去反复验证定位。
  高级阶段,了解问题的本质。
  这个阶段需要非常扎实的知识理论,非常丰富的项目经验,从原理到行业方案都有一定的见解。到了这个阶段,所谓的Debug能力,基本上已经是理论定位,实操验证。
  如何提高Debug能力?
  多想多做,每个程序员都是一步一步成长起来的,只不过有的人由于理论丰富而扎实,起点就高了那么一点点而已,大多数人都是靠着IDE提供的Debug辅助功能成长起来的。从上面的三个阶段来看,除了IDE本身,更多的是需要学习、总结、提升。如果你有多年的程序开发和调试经验,那么你会相信,很多时候Debug都是边猜边试,边测边想,边改边调。
  还有一条很重要的方法,向项目组其他同事尤其是老员工请教,多沟通,多交流。三人行,必有我师。学习别人的经验和方法,特别是那些你感兴趣的或者你从来没有使用过的方法,也许真的很有帮助。你也可以在学习和使用的过程中,适当的变通或者改造,创新出更加适合的方法。
  如果你的项目和硬件有关,Debug的时候一定要适当地合理地运用硬件工具。例如万用表,示波器,逻辑分析仪,真的非常有用。我是搞嵌入式软件开发的,我在开发和调试的过程中,就常常用到这些硬件仪器来定位和解决问题。
  也许你会反驳,如果是老牛或者大咖,肯定是凭空分析,一次修改,一次通过。有没有这种可能呢?有,我自己也有这个能力,但是那些都是小问题或者确定性的问题,或者是经验问题。如果是一个创新性的重大问题,我不认为如此轻松就能解决,至少我没有那个能力,我也没有遇到有此能力的人。纵观所有的技术大牛或者大咖,解决问题的时候都会一定地反复的过程,否则就没有所谓的迭代了,也没有所谓的版本更新了。
  设置断点 每个语义排查
  首先理解代码的逻辑,具体这块是为了做什么?有什么目的。灵活使用优秀的开发工具,通过开发工具可以让你更好地掌控代码,毕竟运行起来,具体哪里出错了,为什么没有按照自己的逻辑走,前一行还是a,怎么运行了这一行变成了b,都可以用过开发工具的debug,来梳理。单步执行,跳步执行,这些debug的技巧一定要掌握。只要脑子不乱,配合开发工具的debug,写代码没那么难。
  如何提高debug的能力呢?说到这,咱必须说说啦,编程过程中,由于人思维的考虑不周全,或者某一块地方逻辑不严谨。再或者程序运行的过慢,我们都可以统称为bug!!!
  那么既然这些无法完全杜绝,那么,我们应该做的是分以下几步;
  第一、首先尽量避免上述情况,每次做完一个功能首先自己审查一次
  第二、当然是结合xdebug啦,咋们打断点,单步执行程序,找到错误地方,加以改正
  第三、学习借鉴前辈们的,或者能力比自己优秀的编程大佬,虚心请教,
  以上是小西瓜对于debug的简单总结…嘻嘻。
  关注我,不迷路,小西瓜带你走上路!!

大数据开发之数仓工具Hive(一)Hive产生的背景Hive的产生是基于mr计算框架的,简单的说就是mr学习过于复杂,成本过高,所以hive的初心是对mr做一层包装,让大家能利于sql的优势来处理数据。直接使用Ma99元!小米推出双接口U盘,值得买吗?相信各位极客,在小米推出之前,也接触过一些山寨的双接口的U盘,这种双接口的U盘它既可以支持手机读取也可以支持电脑读取。这些年很多的笔记本产品,都开始流行做TypeC接口了,USB接红米K50系列配置曝光,让小米12系列自愧不如红米K系列一直系列备受大家的关注,发布的每一款K系列的手机,基本上都是爆款产品,因为性比价太高的原因,使红米K系列甚至可以对标小米数字系列了,去年的红米k40系列相信有不少小伙伴都5款性价比最高的骁龙870手机,最低1699元,用四五年不成问题骁龙870是目前最稳定性能在第一梯队的处理器,好评率排第一。有朋友想入手一款性价比高的骁龙870手机,同时希望好用耐用,所以今天快哥帮大家整理了5款性价比最高最值得买的手机供大家参MacBook苹果电脑屏幕清洁指南相信大家使用电脑的时候,都有这个烦恼,屏幕总是沾满指纹,灰尘,污渍,食物,错误的清洁方式可能会导致屏幕涂层的损害,影响使用,甚至可能导致更严重的灾难,那么我们应该怎样正确的清洁屏幕创新还是搞怪,体验索尼ambie耳夹式耳机Ambie是索尼旗下专注于提供全新音乐体验的品牌,区别于大行其道的入耳式耳机,Ambie公司旗下产品均采用了独特的耳夹式佩戴方式,但不同于骨传导耳机,ambie耳机依旧是气导的传播从几千到上万好坏电视的差距究竟在哪里?同为65英寸的电视,好的能够卖到几万元,便宜的甚至还不到3000元,电视一定是目前科技产品中价格跨度最大的。那么,多花出去的钱,究竟能带来多大提升?轻度使用者和重度使用者分别该如何买OPPO手机为什么更安心?一文读懂绿厂服务成长史如今智能手机更新换代的速度越来愈快,不少人选择手机时,眼里可能都是各种眼花缭乱的参数和技术指标,往往在遇到问题的时候才会发现手机品牌的服务重要性,而更好的用户服务和售后政策也是手机iPhone14ProMax渲染图药丸屏50W快充,搭载M1芯片性能再造巅峰不出意外,今年苹果手机发布会将在9月中旬发布,虽然距离发布的日子还有好几个月,但如今关于iPhone14ProMax的消息可是一点也不少,而且真实性还很高,从目前已知消息来看,全新苦等十几天,官网入手的iPhone13Pro终于到了一般情况下,只有在iPhone刚发售的时候,大家会去官网买,因为价格和授权平台的价格一样。到了后期,各个平台买iPhone都有优惠,所以在官网买的人就非常少了!但官网买iPhone五年果粉都不一定知道10个iPhone隐藏小技巧分享iPhone众所周知,苹果的手机系统一直有着一股神秘色彩,每逢新版本升级之后,官方只会重点介绍一些重大功能,一些小功能则直接省略了,还是靠果粉们口口相传才得到广泛普及,因此每隔一段
春节红包真有那么好抢?一场流量游戏而已又到了一年一度的各平台春节抢红包小高潮!但动辄数亿的红包有那么好抢的吗?信它你就输了!1月19日,虎年春节的支付宝集福活动如期而至。作为互联网抢红包赛道中的老玩家,拼手气分5亿的口春节后什么时候换手机最合适?懂行老师傅说得很实在我身边很多玩数码圈的朋友都在等年后换手机,为何要等年后?其实主要是年后将会有一大波新机发布特别是在三月份期间,国内的一些手机大厂都将会有大动作,那么作为大众用户来说,春节后何时买手没有电没有网监控摄像头是怎么完成远程监控的没有电没有网如何在家安装监控摄像头远程监控?相信这个话题很多人感兴趣,因为在农村很多家庭都没有安装网络,甚至于在城市打工的人群,如果非必要不会安装一个WiFi。因为开户每月套餐都不富迪科技Fortemedia揭示其iSAM商业模式及优势新加坡2022年1月27日美通社语音集成解决方案的全球领先厂商富迪科技,于今日发布最新一代的麦克风解决方案与语音算法,富迪iSAM商务模式集成方案为客户提供更好的收音质量及优化的语虚拟人展览展示,元宇宙时代率先落地的应用场景传媒虚拟人展览展示元宇宙时代率先落地的应用场景随着智能手机等硬件销量以及视频游戏等流量的见顶,移动互联网也迎来了成熟化的阶段,行业亟需发掘新的增长空间。我们认为,元宇宙可能是下一代精益传动一App上榜株洲日报掌上株洲讯(记者高晓燕)近日,工信部公布2021年工业互联网App优秀解决方案名单,湖南精益传动软件科技有限公司的基于风电齿轮传动系统实时寿命预测的智能运维工业App入选。港股收评恒指失守24000点恒生科指大跌3。8教育股领衔下挫南方财经1月27日电,昨日止跌的港股再现大跌行情,恒指跌1。99失守24000点,恒生科技指数大幅收跌3。81,逼近历史低位。行业板块集体下挫,市场情绪再度降至冰点。盘面上,大型科团车网急于讲出新故事,但市场早已不期待新势力新年伊始,汽车界最火爆的事件,不是原极狐总裁加盟小米汽车,也不是昌敬的洛轲汽车获得腾讯领投,而是团车网与李想之间的一场骂战。团车网是一家以线下举办车辆展销会为主企业,于2018年1美国政府预测全球芯片短缺将持续至年底坦言离走出困境还早得很拜登政府得出结论认为,全球半导体短缺将至少持续到今年下半年,这将给包括汽车制造商和消费电子行业在内的众多美国公司带来长期压力。美国商务部长GinaRaimondo周二表示,美国官员中金公司预计2025年国内座舱SoC芯片市场规模有望达到204亿元中金公司研报认为,座舱域控制器供应商选择芯片平台时,呈现高端选高通,中低端选其他平台的特征。高端域控制器选择高端芯片平台,不仅仅是因为高算力芯片平台具有更好的性能表现,也出于对未来美半导体巨头解散上海团队,并挑选数十名中国人才,助其移民美国中美之间的竞争,归根结底是人才和科技的竞争,只有在这两个领域占得先机,才能将优势扩大到军事和外交领域。这一点我们看得出来,美国自然也不傻,近几年,他们不断出台各种政策,大力推动国内