文章目录

  • 前言
  • 一、什么是代码调试?
  • 二、常见的代码调试方式
    • 2.1、手工跟踪(hand trace)
    • 2.2、手工跟踪的适用范围
    • 2.3、使用调试工具
    • 2.4、调试工具具备的特性
  • 总结

前言

我们在项目开发过程中,经常遇到需要进行调试的代码模块。对于初学者而言,手工跟踪最为有效和方便,一方面可以重新对于系统的内部逻辑进行一次梳理,另一方面还可以找到产生问题的地方。而对于高阶的开发者而言,手工跟踪的方式极大地浪费了时间,所以需要调试工具的帮忙。通过本文我将为大家介绍何为代码调试?如何进行手工跟踪和使用调试工具进行代码调试,调试工具又该具备什么特性?


一、什么是代码调试?

查找和改正错误的过程称为调试(debugging)。

调试的一般途径是采用各种方法逐步缩小程序中 bug 所在的范围。

二、常见的代码调试方式

2.1、手工跟踪(hand trace)

手工跟踪(hand trace)程序(即通过读程序找错误),也可以插入打印语句,显示变量的值或程序的执行流程。

2.2、手工跟踪的适用范围

这种方法适用于短小、简单的程序。

2.3、使用调试工具

对于庞大、复杂的程序,最有效的调试方法还是使用调试工具。

JDK 包含了一个命令行调试器 Jdb,结合一个类名来调用该命令。

Jdb 本身也是一个 Java 程序,运行本身的一个 Java 解释器的拷贝。

2.4、调试工具具备的特性

所有的 Java IDE 工具,比如 Eclipse 和 NetBeans 包含集成的调试器。调试器应用让你可以跟踪一个程序的执行。他们因程序的不同,但是大都支持以下特征中的多数:

  • 一次执行一条语句:调试器允许你一次执行一条语句,从而可以看到每条语句的效果。
  • 跟踪进入或者一步运行过一个方法:如果一个方法正在被执行,你可以让调试器跟踪进入方法内部,并且一次执行方法里面的一条语句,或者你可以让调试器一步运行过整个方法。如果你知道方法是可行的,你应该一次运行过整个的方法。比如,通常都会一步运行过系统提供的方法,比如,System.out.println
  • 设置断点:你可以在一条特定的语句上面设置断点。当遇到一个断点时,你的程序将暂停。你可以设置任意多的断点。当你知道程序错误从什么地方可能开始的时候,断点特别有用。你可以将断点设置在那条语句上,让程序先执行到断点处。

对 Eclipse 断点调试内容感兴趣的同学可以点击——Eclipse 答疑:如何使用 Eclipse 进行断点(Breakpoints)调试?

  • 显示变量:调试器让你选择多个变量并且显示他们的值。当你跟踪一个程序的时候,变量的内容持续更新。
  • 显示调用堆栈:调试器让你跟踪所有的方法调用。当你需要看到程序执行的流程的宏观图景的时候,这个特征非常有用。
  • 修改变量:一些调试器允许你在调试的过程中修改变量的值。当你希望用不同的示例来测试程序,而又不希望离开调试器的时候,这是非常方便的。

总结

本文给大家介绍了什么是代码调试,作为开发者,初学者和高阶应如何选择代码调试的方式,不同的代码调试方式又有何种不同,代码调试工具应该具备什么特性可以满足开发者需求。而现在我们常见的代码调试工具多集成到了开发 IDE 中,如 Eclipse 和 IDEA。同时给大家引入了如何使用 Eclipse 进行断点调试,作为拓展你会使用 IDEA 进行代码调试吗?


我是白鹿,一个不懈奋斗的程序猿。望本文能对你有所裨益,欢迎大家的一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家的支持!

什么是代码调试(debugging)?进行代码调试的基本方法有哪些?相关推荐

  1. OpenGL 调试Debugging

    OpenGL调试Debugging 调试Debugging简介 glGetError() 调试输出 GLFW中的调试输出 过滤调试输出 回溯调试错误源 调试着色器输出 OpenGL GLSL参考编译器 ...

  2. 用Android Studio调试Framework层代码

    Android程序员不得不知的调试技巧. 本文以webview loadUrl和域名解析为例,介绍配合使用LLDB和Android Studio调试Framework代码的技巧. java 层调试 首 ...

  3. 手把手教你调试Linux C++ 代码(一步到位包含静态库和动态库调试)

    手把手教你调试Linux C++ 代码 软件调试本身就是一项相对复杂的活动,他不仅要求调试者有着清晰的思路,而且对调试者本身的技能也有很高的要求.Windows下Visual Studio为我们做了很 ...

  4. android studio 扰码,Visual Studio 调试技巧 (三) -- 调试第三方组件代码

    上次我们提到,没有源代码而且没有调试符号,我们也可以 Debug.有人可能会问,我什么时候需要在这种情况下调试吗?! 是的.比方说,我们用了某些第三方的组件,这些组件里面难免也会有 Bug.就算是微软 ...

  5. android通过代码设置铃声_使用VS Code调试Android C_C++代码(无需Android源码)

    需求分析 在开发 Android Native 程序时(仅 C/C++代码,无 APK 应用),之前在调试的过程中一直只是使用添加 LOG 的方式来定位程序的问题,而在 Linux 上开发平台程序时, ...

  6. 调试一段代码两个小时都没搞定,继续死磕还是寻找其他方式?

    hi-好久不见,在家办公的你们还好吗? 听闻有人克服着网络不好.工作环境嘈杂的困难,已经连续待机 20 几个小时了.没办法,疫情当前,这点困难不算啥,该克服的还是要克服.实在不行,试试番茄工作法,提高 ...

  7. win10下使用pycharm调试wsl的代码

    安装wsl 网上一大把,自己搜.我自己装的ubuntu 18 将代码放在win10的目录中 如 d:\teether wsl安装python3-pip wsl的Ubuntu下已经装了python3 p ...

  8. VC代码的编写和调试---编写易于调试的VC代码

    转自:http://www.vcgood.com/forum_posts.asp?TID=1692&PN=1 一 程序的设计 要避免错误,首先要从好的设计开始.对于程序的设计,需考虑到程序的两 ...

  9. (五)stm32工程代码HardFault异常查错调试方法

    (五)stm32工程代码HardFault异常查错调试方法 参考文章: (1)(五)stm32工程代码HardFault异常查错调试方法 (2)https://www.cnblogs.com/zhan ...

  10. 【Windows 逆向】OD 调试器工具 ( OD 调试数据时硬件断点对应的关键代码 | 删除硬件端点恢复运行 )

    文章目录 前言 一.OD 调试数据时硬件断点对应的关键代码 二.删除硬件端点恢复运行 前言 在 [Windows 逆向]OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址 ...

最新文章

  1. 绝对炫的3D幻灯片-SLICEBOX
  2. [置顶] PHP如何扩展和如何在linux底层对php扩展?
  3. 【数据集】自动驾驶都有什么测试基准?
  4. 爬虫 spider11——搭建分布式架构通过feign技术,开发服务消费者
  5. 前端学习(2658):vue3 computed
  6. 从零开始学视觉Transformer (11):目标检测DETR-2
  7. 今晚直播丨手把手安装搭建GoldenDB
  8. STM32 LWIP实验第一章节--了解以太网
  9. 阿里巴巴微服务技术实践
  10. 网络分析软件(科来网络分析软件)
  11. Linux下zip命令-不打包目标文件目录
  12. 从零开始学PCR技术(一):PCR技术简介
  13. 超级邮件群发代理服务器设置,超级邮件群发教程
  14. P5.js码绘---阿珊自画像
  15. 平面设计中的插画设计技巧
  16. 采购招标系统源码 一站式全流程采购招标系统
  17. excel窗体最大化最小化_最小化Excel 2007功能区
  18. 英特尔(中国)架构师夏磊先生一行到访云创
  19. 创业,I have a dream
  20. 聊天室(2)-项目开发文档-李兆龙

热门文章

  1. oracle redo 200mb,Oracle的redo log在各场景下的恢复
  2. eclipse手动pom本地包_(转)如何在maven的pom.xml中添加本地jar包
  3. onclick 源码_精读:手写React框架 解析Hooks源码
  4. mapreduce复制连接的代码_我的 Hive 为什么跑不起来/跑得慢?看看是不是少了这几行代码?...
  5. (进阶篇)Redis6.2.0 集群 哨兵模式_搭建_01
  6. Mybatis-Plus的SQL语句组拼原理
  7. 工作流实战_09_flowable 流程实例挂起与激活
  8. 企业实战_19_MyCat初始化ZK并配置Mycat支持ZK
  9. angular封装富文本编辑器指令
  10. mclmcrrt77 matlab,mclmcrrt77.dll下载