精华内容
下载资源
问答
  • Debug
    千次阅读 多人点赞
    2019-05-23 11:08:25

    这里是修真院后端小课堂,每篇分享文从

    【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

    八个方面深度解析后端知识/技能,本篇分享的是:

    【Debug 】

    1. 背景介绍

    我们程序员一生与Bug纠缠不清,自然一辈子离不开调试

    今天的话题就讲程序员与Debug不得不说的故事

    百度上讲,调试是保证所提供的设备能够正常运行的必须程序,所有费用由设备提供商负担。

    编好程序后,用各种手段进行查错和排错的过程。

    说道调试一定离不开Debug

    今天就重点讲讲Debug的故事

    DEBUG是一种计算机程序。

     

    马克2号(Harvard Mark II)编制程序的葛丽丝·霍波(Grace Hopper)是一位美国海军准将及计算机科学家,同时也是世界最早的一批程序设计师之一。 有一天,她在调试设备时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。 于是,霍波诙谐的把程序故障统称为“臭虫(BUG)”,把排除程序故障叫DEBUG,而这奇怪的“称呼”,竟成为后来计算机领域的专业行话。

     

    2. Debugger

    Debugger是什么?干什么的?怎么用?

    我们经常使用到的“Debugger”只是用来帮助我们进行Debug的工具,“Debugger”本身不能自动完成“Debug”。

    我们可以回想一下我们是如何进行Debug的,在进行Debug的过程中,我们通过Debugger来完成以下工作:

    (1)监视“Debug对象”的状态;

    (2)控制“Debug对象”的运行;

    这些工作可以为“发现Debug对象中存在的问题”以及“对解决问题方案的检验”提供有用的信息。 监控工作有时只需要由软件就可以完成,有时不仅需要软件支持,还需要硬件的支持。 Debugger除了被用来Debug,还被用来帮助我们理解“Debug的对象”内部结构,因为我们用到的Debugger能够完成对“Debug对象”的监控工作, 在监控的过程中可以获取“Debug对象”动态特征的信息,这对我们理解其结构是非常有用的。

     

    先给一些快捷键

    F7:单步调试,会进入方法体,如果该方法体还有方法,则不会进入该内嵌的方法中

    F8:单步调试,不会进入

    F9:跳至下一断点

    Shift+F8:跳出

    Alt+F8:可以通过在 Debug 的状态下,选中对象,弹出可输入计算表达式调试框,查看该输入内容的调试结果 。

    暂时知道这么多就已经可以了

    怎么用,请移步视频区

    PPT:https://ptteng.github.io/PPT/PPT-java/java-task1-Debug.html#/

     

    Debug和程序员不得不说的故事_腾讯视频

     

    更多相关内容
  • debug.exe和debug32.exe

    2015-10-15 01:27:57
    给64位系统的同学们提供的,汇编程序调试工具,既有debug.exe也有debug32.exe
  • jspdf.debug.js

    2018-04-19 09:41:14
    jsPDF 是一个基于 HTML5 的客户端解决方案,用于生成各种用途的 PDF 文档。使用方法很简单,只要引入 jsPDF 库,然后调用内置的方法就可以了。
  • 今天项目经理把同事们叫到一起,说线上438x6项目出现奇葩问题,但是开发环境初步测试没问题,需要配合测试部的小姐姐们在测试环境远程debug跟踪下,排查下问题,以及正式环境日志也会提供,重现下问题,解决下bug;...

    大家好,我是曹尼玛,刚从培训机构毕业,去一家单位上班一周了…
    在这里插入图片描述
    这一周项目经理让我熟悉了项目业务,架构和设计,不算难,凭借我培训机构第一名的成绩,还是很顺溜。
    在这里插入图片描述
    今天项目经理把同事们叫到一起,说线上438x6项目出现奇葩问题,但是开发环境初步测试没问题,需要配合测试部的小姐姐们在测试环境远程debug跟踪下,排查下问题,以及正式环境日志也会提供,重现下问题,解决下bug;
    在这里插入图片描述
    项目经理见我这几天比较悠闲
    所以就对我说,“曹尼玛,这个小任务就交给你了”
    在这里插入图片描述
    “我,我,我,我不会远程debug,没听过什么是远程debug”;
    在这里插入图片描述
    我看到同事都忍不住笑出来了,项目经理也鄙视的笑了。
    哎,培训机构只教了debug本地调试,何况还没练熟呢,远程debug都没听过。
    后来散会,项目经理单独找我训话;
    在这里插入图片描述
    “简历2年开发经验,远程debug都不会,你是干什么吃的,明天下班前把bug找到,否则直接滚蛋”
    在这里插入图片描述
    靠,包装简历和经验,露馅了
    赶紧学吧,加班熬夜学习了下,第二天上午通过远程debug,配合线上日志,最终找到了问题;
    顺便总结了下,写了篇远程debug调试文章分享给大家,以及录制了一个远程debug视频教程;希望大家早日学会,不要被他人嘲笑和鄙视!

    这里正式开始笔记内容;文末附上视频教程下载地址(白嫖0积分下载)

    1,远程DEBUG的必要性


    由于部署环境的差异性,相信很多朋友都碰到过开发环境正常测试过的功能在测试环境甚至生产环境下出现bug的情况。一般情况下,生产环境可以采取的手段比较单一,即通过日志的方式获取运行中的环境上下文,分析日志文件并尝试重现bug。这会带来的问题还是不少的,首先,日志的分析是一项比较耗时的工作;其次,现有的日志记录不一定能反映出问题,你可能需要多次重复这个过程(分析日志->猜测问题->加日志->部署->获取日志)来慢慢逼近问题。倘若是测试环境,我们还多了一项可供选择的手段——远程调试——将程序在测试环境中以debug模式启动,在本机使用IDEA在工程中设置断点进行调试。

    2,IDEA构建SpringBoot测试Demo


    新建SpringBoot测试项目remote-debug,只需要web依赖支持即可;版本选用2.2.6.RELEASE(注意,别用2.5.1版本,有坑,亲测)

    pom.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>2.2.6.RELEASE</version>
    		<relativePath/> <!-- lookup parent from repository -->
    	</parent>
    	<groupId>com.java1234</groupId>
    	<artifactId>remote-debug</artifactId>
    	<version>v1.0</version>
    	<name>remote-debug</name>
    	<description>Demo project for Spring Boot</description>
    	<properties>
    		<java.version>1.8</java.version>
    	</properties>
    	<dependencies>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-test</artifactId>
    			<scope>test</scope>
    		</dependency>
    	</dependencies>
    
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
    			</plugin>
    		</plugins>
    	</build>
    
    </project>
    

    application.yml:

    server:
      port: 80
      servlet:
        context-path: /
      tomcat:
        uri-encoding: utf-8
    

    简单搞个TestController,提供一个Rest接口

    package com.java1234.controller;
    
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @author java1234_小锋
     * @site www.java1234.com
     * @company Java知识分享网
     * @create 2021-06-12 15:37
     */
    @RestController
    public class TestController {
    
        @PostMapping("/test")
        public String test(Integer id,String name){
            System.out.println("id="+id);
            System.out.println("name="+name);
            if(id>0){
                return "success "+name;
            }else{
                return "fail";
            }
        }
    
    }
    

    我们启动项目,用postman测试下:

    测试接口:http://localhost/test 加入Body form-data 参数 id=1,name=marry,Send 测试,返回 success marry,测试OK;

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qPf6tyol-1623688298210)(image-20210613222730931.png)]

    3,测试Demo项目配置支持远程调试


    pom.xml里配置jvmArguments参数 -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n:

    <build>
    	<plugins>
    		<plugin>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-maven-plugin</artifactId>
    			<configuration>
    				<jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n</jvmArguments>
    			</configuration>
    		</plugin>
    	</plugins>
    </build>
    

    加了此配置后,打包后的项目发布服务器,可支持远程DEBUG;

    具体参数详解:

    -Xdebug 通知JVM工作在DEBUG模式下;

    -Xrunjdwp 通知JVM使用(Java debug wire protocol)运行调试环境。该参数同时包含了一系列的调试选项;

    **transport **指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另有dt_shmem指用共享内存方式,其中,dt_shmem只适用于Windows平台;

    address 调试服务器的端口号,客户端用来连接服务器的端口号;

    server=y/n VM 是否需要作为调试服务器执行;

    suspend=y/n 是否在调试客户端建立连接之后启动 VM;

    4,IDEA打包jar


    我们打包jar包;

    右侧Maven工具,双击 package打包工具;

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3t35X1S1-1623688298215)(image-20210613224738500.png)]

    一般打包跳过test,可以点击箭头所指闪电图标,这样打包速度会快很多;

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gjGv5k7R-1623688298218)(image-20210613224828589.png)]

    打包后,在target目录下,会生成一个jar包;我们把它复制出来即可;

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K5FN6ULx-1623688298222)(image-20210613224918420.png)]

    5,启动jar并且带启动参数支持远程调试


    我们把remote-debug-v1.0.jar放D盘根目录;

    我们启动jar,并且支持远程DEBUG;

    java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar remote-debug-v1.0.jar
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RERGHClm-1623688298225)(image-20210613225414441.png)]

    启动OK,监听socket 5005端口

    6,IDEA远程DEBUG配置


    IDEA要进行远程DEBUG,需要进行配置;

    1,启动项下拉,选择 Edit Configurations...编辑配置
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3UGDXNMD-1623688298228)(image-20210613225801811.png)]

    2,点击+,选择Remote,添加远程DEBUG配置
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3rzwtdYm-1623688298229)(image-20210613230023399.png)]

    3,添加远程DEBUG配置项,Host和Port,配置后,点击ApplyOK按钮

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l0edF9KU-1623688298231)(image-20210613230200362.png)]

    7,IDEA远程DEBUG测试


    1,打测试断点

    我们直接在TestController类里的test方法上打点断;

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2MqDENbp-1623688298232)(image-20210613230809384.png)]

    2,选择远程debug启动项,然后点击测试调试按钮启动;
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HWmN2f6b-1623688298234)(image-20210613230646749.png)]

    3,postman测试

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VJrvld2D-1623688298236)(image-20210613231151240.png)]

    4,成功进入断点

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BeCKrJS3-1623688298238)(image-20210613231235544.png)]

    我们走完断点;

    5,启动的jar包打印信息,测试OK

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-waIbt2vf-1623688298241)(image-20210613231336792.png)]

    8,eclipse远程DEBUG实现


    1,右击项目 -> Debug As -> Debug Configurations…

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NCIa03JQ-1623688298243)(image-20210613232154571.png)]

    2,找到 Remote Java Application 然后右击 New

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o1TZdUQg-1623688298245)(image-20210613232409021.png)]

    3,配置HostPort,点击Debug按钮,即可实现远程DEBUG

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pDNULzPO-1623688298248)(image-20210613232629335.png)]

    9,打war包方式配置远程DEBUG


    如果打的是war包,需要两个步骤:

    1. 将 web 应用部署到 Tomcat 的 webapp 目录下

    2. 修改 Tomcat/bin/startup.bat 文件,在最前面加上如下代码:

      SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

    10,远程debug视频教程+文档+源码下载

    链接:https://pan.baidu.com/s/1Xd75eAOXcvAnBax7VFsnjQ
    提取码:1234

    假如链接失效,请加锋哥WX: java3459

    微信搜一搜【java1234】关注这个放荡不羁的程序员,关注后回复【资料】有我准备的一线大厂笔试面试资料以及简历模板。

    展开全文
  • jsPdf.debug.js插件

    2017-05-11 14:04:40
    js把图片或者文字转化生成pdf文件的插件
  • gsensor-debug

    2015-10-27 18:47:18
    gsensor-debug,可以观察三轴的曲线,下面是手机上下摆动的曲线
  • Debug Hacks中文版—深入调试的技术和工具.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
  • nodejs的调试debug

    千次阅读 2021-01-27 21:13:16
    文章目录 简介 开启nodejs的调试 调试的安全性 使用WebStorm进行nodejs调试 使用Chrome devTools进行调试 使用node-inspect来进行调试 其他的debug客户端 简介 对于开发者来说,在开发应用程序的过程中,往往为了...

    简介

    对于开发者来说,在开发应用程序的过程中,往往为了开发方便和解决bug需要借助于编程语言的调试功能。一般来说我们需要借助于强大IDE的调试功能来完成这项工作。nodejs也不例外。

    今天我们来详细介绍一下如何调试nodejs程序。

    开启nodejs的调试

    还记得之前我们讲到的koa程序吗?本文将会以一个简单的koa服务端程序为例,来展开nodejs的调试。

    先看下一个简单的koa服务app.js:

    const Koa = require('koa');
    const app = module.exports = new Koa();
    
    app.use(async function(ctx) {
      ctx.body = 'Hello World';
    });
    
    if (!module.parent) app.listen(3000);
    
    

    上面的程序开启了3000端口,建立了一个http服务。每次请求的时候,都会返回hello World,非常的简单。

    要想运行上面的程序,我们需要执行node app.js。 这会执行app.js但是并不会开启调试功能。

    怎么进行调试呢?

    我们需要加上 --inspect 参数:

    node --inspect app.js
    

    上面的代码将会开启nodejs的调试功能。

    我们看下输出结果:

    Debugger listening on ws://127.0.0.1:9229/88c23ae3-9081-41cd-98b0-d0f7ebceab5a
    For help, see: https://nodejs.org/en/docs/inspector
    

    结果告诉了我们两件事情,第一件事情就是debugger监听的端口。默认情况下将会开启127.0.0.1的9229端口。并且分配了一个唯一的UUID以供区分。

    第二件事情就是告诉我们nodejs使用的调试器是Inspector。

    Inspector是nodejs 8之后引入的,如果是在nodejs 7之前,那么使用的是legacy debugger。

    调试的安全性

    如果debugger连接到了nodejs运行环境中,如果有恶意攻击者的话,这个恶意攻击者可以在nodejs环境中运行任意代码。这会给我们的程序带来很大的安全隐患。

    所以我们一定要注意调试的安全性。一般来说,我们不建议进行远程调试。

    默认情况下 --inspect 绑定的是127.0.0.1,这样就只允许本地程序访问。并且任何本地运行的程序都有权限进行该程序的调试。

    如果我们真的想将debug程序暴露给外部程序的话,那么可以指明本机的外网IP地址或者0.0.0.0(表示任何地址,无限制),这样远程机子就可以进行远程调试了。

    如果我们想进行安全的remote debug该怎么处理呢?

    首先,我们要开启本地的debug:

    node --inspect app.js
    

    然后我们可以搭建一个ssh隧道,将本地的9221端口映射到远程服务器的9229端口:

    ssh -L 9221:localhost:9229 user@remote.example.com
    

    这样我们就可以通过连接本地的9221端口,进行远程调试了。

    使用WebStorm进行nodejs调试

    JetBrains出品的WebStorm可谓是开发nodejs的利器,WebStorm自带有debug选项,如果开启该选项,则会在后台开启 --inspect:

    使用WebStorm来进行调试和使用IDEA来进行java程序调试类似,这里就不多介绍了。

    使用Chrome devTools进行调试

    使用Chrome devTools进行调试的前提是我们已经开启了 --inspect模式。

    在chrome中输入chrome://inspect:

    我们可看到chrome inspect的界面,如果你本地已经有开启inspect的nodejs程序的话,在Remote Target中就可以直接看到。

    选中你要调试的target,点击inspect,即可开启Chrome devTools调试工具:

    你可以对程序进行profile,也可以进行调试。

    这里我们关注的是调试,所以转到source一栏,添加你要调试的程序的源代码:

    加入断点即可开始调试了。和在chrome中调试web端的js是一样的。

    使用node-inspect来进行调试

    其实nodejs有一个自带的调试工具,叫做node-inspect,这是一个cli的调试工具。我们看一下怎么使用。

    我们直接使用:

    node inspect app.js
    
    < Debugger listening on ws://127.0.0.1:9229/f1c64736-47a1-42c9-9e9e-f2665073d3eb
    < For help, see: https://nodejs.org/en/docs/inspector
    < Debugger attached.
    Break on start in app.js:1
    > 1 const Koa = require('koa');
      2 const app = module.exports = new Koa();
      3 
    debug> 
    
    

    node inspect 做了两件事情,第一件事情就是生成子程序去运行node --inspect app.js,第二件事情就是在主程序中运行CLI调试窗口。

    这个CLI调试程序为我们提供了一些非常有用的命令:

    1. Stepping
    • cont, c: 继续执行
    • next, n: Step到下一步
    • step, s: Step in
    • out, o: Step out
    • pause: 暂停运行的代码
    1. Breakpoints
    • setBreakpoint(), sb(): 在当前行设置断点
    • setBreakpoint(line), sb(line): 在指定的行设置断点
    • setBreakpoint(‘fn()’), sb(…): 在指定的function中设置断点
    • setBreakpoint(‘script.js’, 1), sb(…): 在指定的脚本文件中设置断点
    • clearBreakpoint(‘script.js’, 1), cb(…): 从文件中清除断点
    1. Information
    • backtrace, bt: 打印当前execution frame的backtrace信息
    • list(5): 列出源代码前后的5行
    • watch(expr): 添加监听表达式
    • unwatch(expr): 删除监听表达式
    • watchers: 列出所有的watchers
    • repl: 打开repl表达式
    • exec expr: 执行表达式

    通过上面的命令,我们可以在CLI中进行比较复杂的调试活动。

    其他的debug客户端

    除了上面我们讲到的几个之外,我们还可以使用vscode,Visual Studio ,Eclipse IDE 等来进行nodejs的调试,这里就不一一详细介绍了。

    感兴趣的朋友可以自行探索。

    本文作者:flydean程序那些事

    本文链接:http://www.flydean.com/nodejs-debug/

    本文来源:flydean的博客

    欢迎关注我的公众号:「程序那些事」最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

    展开全文
  • Debug.exe和DOSBox合辑

    热门讨论 2014-06-26 23:21:10
    主要解决win8.1 64为环境下不能使用debug的问题
  • E-Debug虫子修复

    2015-01-12 22:45:03
    E-Debug虫子修复
  • 64位win7专用Debug

    千次下载 热门讨论 2013-01-24 14:39:40
    xp和32位的win7下都自带有debug,64位win7却没了。故上传一个,是DosBox和debug32的打包。
  • Debug断点调试详解

    千次阅读 多人点赞 2021-04-11 09:06:37
    文章目录Debug断点调试功能一、断点简介二、Debug控制面板三、Debug按钮的使用1. 跳转到当前Debug所在行2. 步过3. 步入4. 强制步入5. 步出6. 回退断点7. 运行到光标处8. 计算表达式9. 其余按钮介绍四、Debug其他功能...

    Debug断点调试功能

    一、断点简介

    • 程序运行过程中执行到断点,程序就会暂停在断点的代码处,不会自动继续向下运行,可以根据程序员的指令分析之后的代码流程

    • 在代码行的最前面单击即可设置断点

      首先讲述行断点,所以此时的断点应该打在方法体内部的代码行上,而不是方法的声明处

      image-20210409161553096
    • 以Debug模式启动程序即可开启断点调试

      image-20210409161559552
    • 可以同时设置多个断点

    二、Debug控制面板

    • 以Debug模式启动程序之后自动弹出Debug控制面板:

      image-20210409161611783
    • 控制面板的基本介绍

      image-20210409161620307

    三、Debug按钮的使用

    对Debug按钮的整体介绍:(后面会逐一详解)

    按钮说明
    (Alt + F10):如果处于其他代码行或页面,点击这个按钮可回到此时Debug正在执行的代码行
    (F8):步过,代码逐行向下执行,如果这一行上有方法则自动执行方法不会进入方法内部
    image-20210409161745556(F7):步入,如果当前行有方法,可以进入方法内部;一般用于进入自定义方法内,不会进入官方类库的方法体
    (Alt + Shift + F7):强制步入,能进入任何方法体,包括自定义方法和类库方法
    (Shift + F8):步出,自动执行完此方法体内的剩余代码并从方法体内部退出到方法调用处的下一代码行,表示此方法已执行完
    (无快捷键) 回退断点,退出方法体至方法调用处,此方法不会执行完,可以再次进入此方法
    (Alt + F9):运行到光标处,无需打断点,将光标定在某一代码行,点击此按钮直接执行到此代码行
    (Alt + F8):计算表达式,可以解析指定的表达式(语句),并执行此表达式

    1. 跳转到当前Debug所在行

    • 对应的调试按钮(Alt + F10)

    • 作用

      • 如果处于其他代码行或页面,点击这个按钮可回到此时Debug正在执行的代码行
    • 使用步骤

      image-20210409161847620 image-20210409161901367 image-20210409161915983

    2. 步过

    • 步过调试按钮(F8)

    • 作用

      • 代码逐行向下执行,如果这一行上有方法则自动执行方法不会进入方法内部
    • 使用步骤

      image-20210409161941027
    • 注意:断点执行过程中所执行到的行(比如上图有蓝色条框的代码行),表示的是此代码行还没有被执行,由编程人员选择进入此方法还是步过此方法

    3. 步入

    • 步入调试按钮(F7)

    • 作用

      • 如果当前行有方法,可以进入方法内部;一般用于进入自定义方法内,不会进入官方类库的方法体
    • 使用步骤

      image-20210409161959870

    4. 强制步入

    • 强制步入调试按钮(Alt + Shift + F7)

    • 作用

      • 能进入任何方法体,包括自定义方法和类库方法
    • 使用步骤

      image-20210409162013281 image-20210409162025521

    5. 步出

    • 步出调试按钮(Shift + F8)

    • 作用

      • 自动执行完此方法体内的剩余代码并从方法体内部退出到方法调用处的下一代码行,表示此方法已执行完
    • 使用步骤

      image-20210409162106696 image-20210409161007053

    6. 回退断点

    • 回退断点调试按钮

    • 作用

      • 退出方法体至方法调用处,此方法不会执行完,可以再次进入此方法
      • 与步出的区别
        • 步出会执行完此方法然后退出,不可再次进入此方法(如果想再次进入方法必须重新Debug)
        • 回退不会执行完此方法,而是退回到方法的调用处,还可再次进入此方法
    • 使用步骤

      image-20210409162128912 image-20210409162138192

    7. 运行到光标处

    • 运行到光标处按钮 (F9)

    • 作用

      • 无需打断点,将光标定在某一代码行,点击此按钮直接执行到此代码行
    • 使用步骤

      image-20210409162223930 image-20210409162233779

    8. 计算表达式

    • 计算表达式按钮(Alt + F8)

    • 作用

      • 解析表达式,执行表达式的代码
        • 无需修改代码,可以临时修改参数的值
        • 获取指定表达式的值
    • 使用步骤

      image-20210409162253672

      如果想要测试董事长,则点击计算表达式按钮临时修改参数值:

      image-20210409161138215

      表达式修改为get方法,即可得到此对象的值

      计算表达式的功能并不单单限于以上两种方式,可以解析任何表达式,只要符合Java语法即可

    9. 其余按钮介绍

    9.1 重启这次Debug

    image-20210409162309523

    9.2 程序向下运行,直到下一个断点才停下来,如果没有断点,则整个程序会直接执行完毕

    image-20210409162322463

    9.3 进入断点的管理面板(View BreakPoints)

    image-20210409161315930

    启动Debug调试:

    image-20210409162457305

    9.4 临时禁用所有断点

    image-20210409162605569

    9.5 停止Debug过程

    image-20210409163106347

    注意:在方法内部停止了程序,此方法不会中断,只有执行完此方法程序才会停止(进入了方法中只有执行完方法才可以出去)

    四、Debug其他功能

    1. 查看某一变量的值

    image-20210409163133990

    输入所要查看的变量:

    image-20210409163148934

    变量的值将会显示在面板上:

    image-20210409163156604

    2. 条件断点

    • 条件断点简介

      • 当条件满足时此断点才会生效
    • 使用步骤

      image-20210409163227275

      让程序继续运行,直至条件满足才进入断点:

      image-20210409163235714

    3. 多线程调试

    • 概念

      • 断点右键

        image-20210409163247795
      • 如果为ALL的话,则所有线程都会显示在面板上,同时控制所有线程,不利于观察一个线程的执行过程

      • 如果为Thread的话,只会显示一个线程的断点调试过程

        • 所有的线程都会执行到断点处停止,只不过是只能控制其中一个线程,想要控制其他线程必须切换线程
    • 使用步骤

      image-20210409163316335

      在面板可以切换要显示的线程以及显示各线程的状态:

      image-20210409163338277

    4. 强制方法返回

    • 概念

      • 当方法执行到一半时(比如出现了异常),不想继续执行此方法(此方法中剩余的代码都不执行),直接退回至调用处的下一行
    • 使用步骤

      image-20210409163959362

    五、断点分类

    1. 行断点

    • 上述讲述的就是行断点,断点打在方法体内,而不是方法的声明处

    2. 详细断点(源断点)

    • 使用 shift + 鼠标左键,断点打在方法体内,而不是方法的声明处

      image-20210409164444655

    3. 方法断点

    3.1 作用一

    • 会自动的在进入方法或者离开方法时设置断点(不可见的两个断点),可以直接从方法的第一行执行到方法的最后一行,方便观察方法体内的参数、变量的初始值和最终值,而不关心变化过程

    • 在方法的声明处打断点

      image-20210409164255167
    • 进入Breakpoints中,设置断点在进入方法时还是离开方法时

      image-20210409202213960

    3.2 作用二

    • 自动的跳转到方法的实现类

      • 为接口中的方法添加方法断点

        image-20210409164534848
      • 没有在实现类中添加任何断点

        image-20210409164552718
      • 方法的调用处也没有添加任何断点

        image-20210409164759958
      • 以Debug方式启动程序

        image-20210409164713713
      • 使用场景:接口的实现类有很多个,不知道是执行哪一个实现类的方法时,可以在接口的方法打一个方法断点,会自动的跳转到对应的实现类的方法

    4. 异常断点

    • 无需显示设置异常断点的位置,程序会自动的在产生指定异常的位置停止下来

    • 使用步骤

      • 首先进入断点的管理面板(BreakPoints),添加异常断点

        image-20210409165046836 image-20210409165107786 image-20210409165133780
      • 以Debug方式启动程序,会自动的在产生异常的位置停顿

        image-20210409164918575

    5. 字段断点

    • 监控某一字段(属性)在整个程序中执行的流程

      • 会自动的在此属性值被读取或者被修改的位置停顿下来,每有一次读取或值变化就会停顿一次
    • 在字段所在的代码行添加字段断点

      image-20210409165228068
    • 进入Breakpoints中,设置程序停顿的条件

      image-20210409201638723
    • 以Debug方式启动程序

      image-20210409165350901 image-20210409165450498

    六、JDK1.8 Stream调试

    image-20210409165554521 image-20210409165645915
    展开全文
  • IDEA如何进行debug调试

    万次阅读 多人点赞 2021-03-13 15:56:47
    IDEA如何进行debug调试第一步,设断点,打开debug第二步,使用Debug调试的功能键 程序调试,相信是所有程序员必经之路,因为程序写出来是不可能没有错误的,当然除了非常简单的一些程序之外。相信大家肯定使用过...
  • npm--debug模块

    千次阅读 2020-03-16 19:00:35
    文章目录资料原文概述用法简介(debug使用+DEBUG环境变量启用)DEBUG环境变量与debug实例的启用列表DEBUG环境变量的设置语法总结命名空间的颜色服务端的support-color颜色扩展支持web检查器的客户端的支持毫秒级别的...
  • #if DEBUG与条件(“ DEBUG”)

    千次阅读 2020-02-02 12:18:39
    在大型项目中,哪种方法更好,为什么使用: #if DEBUG public void SetPrivateValue(int value) { ... } #endif 要
  • IDEA中如何使用debug调试项目 一步一步详细教程

    万次阅读 多人点赞 2018-07-09 16:45:46
    在现在的开发中,我们经常采用Debug来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行...
  • webstorm+node之debug

    千次阅读 2022-03-31 16:07:09
    如今,使用webstorm的同学越来越多,但是一些同学不知道如何使用webstorm配合node使用debug,下面将介绍两种开启debug的方法 1.启动静态资源 "scripts": { "start": "nodemon ./bin/www" } 步骤如下: 1.1 ...
  • vscode的1.58版本发布了一项新功能,支持jupyter的debug了。个人感觉在vscode上使用jupyter非常的舒服,jupyter本身是一个网页版的应用,每次启用是都得打开一个网页,但是在vscode上,直接创建一个.ipynb后缀的文件...
  • debug——生成log

    千次阅读 2021-05-31 16:46:28
    1、生成log的简单方式 import logging # logging是多线程运行的,能确保所有logging输出顺序是对的,但不能确保logging与print的输出...# 日志输出级别设置为logging.DEBUG,即DEBUG以上的log都会保存,默认为warnin
  • c语言debug怎么用

    千次阅读 2021-05-18 15:46:27
    简单来说,有两种方式,一种是源码debug,即分析源码来找出bug位置,一般使用printf()打印出程序执行每一步的信息,一种是可执行文件debug,需要使用调试器来进行。1、源码debug类似于下面的源码,主要通过程序执行...
  • IDEA远程DEBUG

    千次阅读 2021-07-31 18:01:51
    你还在抱怨测试环境环境出现异常时为何不多打点日志? 你还在愁绪怎么自由的调试代码(测试环境...试一试远程DEBUG吧,远程服务器上的情况,掌握在我们自己手中,而无需根据错误日志一步一步猜,直接本地调试上手撸吧!
  • malloc debug 内存泄露案例分析

    千次阅读 2019-12-19 20:28:08
    阅读/bionic/libc/malloc_debug/README.md native_heapdump_viewer.py使用 测试代码 测试代码log分析 案例 自动dump脚本(malloc_debug.sh) 注意事项 前言 环境:Android10 目的:调试native 进程内存泄露,...
  • IDEA的debug调试技巧详解

    千次阅读 多人点赞 2021-11-10 16:19:10
    二、debug操作分析 1、打断点 2、运行debug模式 3、重新执行debug 4、让程序执行到下一次断点后暂停 5、让断点处的代码再加一行代码 6、停止debug程序 7、显示所有断点 8、添加断点运行的条件 9、屏蔽所有...
  • 打开LWIP_DEBUG的打印信息调试

    千次阅读 2020-05-26 09:39:05
    在lwip 2.1.2的版本,打开的debug 调试的步骤: 1.在debug.h 文件中找到debug打印的定义 默认LWIP_DEBUG这个宏没有定义, 2.在lwipopt.h 文件中或者其他文件定义 一下LWIP_DEBUG这个宏, 3.在opt.h 中可以...
  • idea remote debug

    千次阅读 2020-06-17 19:58:19
    Java远程调试的原理是两个JVM之间通过debug协议进行通信,然后以达到远程调试的目的。两者之间可以通过socket进行通信。 二、步骤: 1、修改配置文件,添加jvm 启动参数 -Xrunjdwp 开启远程debug 端口。一般设置为...
  • debug功能

    千次阅读 2020-09-11 17:32:36
    01_Debug简介和意义 什么是程序DeBugDebug,是程序开发人员必会的一项调试程序的技能。 企业中程序开发和程序调试的比例为1:1.5,可以说如果你不会调试程序,你就没有办法从事编程工作。 ...
  • 如何用VsCode进行Debug

    千次阅读 2022-03-04 12:53:48
    如何用VsCode进行Debug 本文以Mac系统,C++程序为例,进行Debug操作 安装插件 不同的语言需要安装的debug插件不一样,如下 Debug页面 VsCode的Debug页面如下 配置Debug环境 点击左侧的Debug图标,默认情况下,...
  • idea debug源码

    千次阅读 2020-11-07 09:09:27
    debug是开发者最常用的一种模式,但大多数开发者只会debug自己的代码,而不会debug JDK源码或第三方jar包中的源码。 或许你还没有看源码的必要,或许你通过idea的反编译功能看"死"的源码就足够了,但是当你看不懂...
  • debug怎么用

    千次阅读 2021-02-27 19:00:38
    以eclipse为例,debug的用法:1、首先在一个java文件中设断点,然后debug as,open debug Dialog,然后在对话框中选类后,Run。2、F5键与F6键均为单步调试,F5是step into,也就是进入本行代码中执行,F6是step over...
  • 汇编(三):DEBUG

    万次阅读 2021-09-16 14:11:59
    文章目录前言什么是 DEBUGDEBUG 功能安装 DEBUGR命令D命令E命令U命令T命令A命令后记 前言 为熟练使用 DEBUG 功能,特展开此次实验,实验内容主要为查看 CPU 和内存,用机器指令和汇编指令编程;   什么是 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,741,289
精华内容 696,515
关键字:

dubug

友情链接: 3.-facePP-offline-API.rar