广告
返回顶部
首页 > 资讯 > 后端开发 > Python >远程debug调试入门
  • 442
分享到

远程debug调试入门

2024-04-02 19:04:59 442人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1.远程DEBUG的必要性2,idea构建SpringBoot测试Demo3,测试Demo项目配置支持远程调试4,IDEA打包jar5,启动jar并且带启动参数支持远程调试6,I

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;


@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

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: 远程debug调试入门

本文链接: https://www.lsjlt.com/news/129347.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 远程debug调试入门
    目录1.远程DEBUG的必要性2,IDEA构建SpringBoot测试Demo3,测试Demo项目配置支持远程调试4,IDEA打包jar5,启动jar并且带启动参数支持远程调试6,I...
    99+
    2022-11-12
  • jvm开启远程调试功能;idea远程debug
    概述 有时候一些问题本地调试无法复现,这个时候可以开启jvm的远程调试功能 jar包启动 jdk8 java -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=...
    99+
    2023-08-30
    jvm intellij-idea java
  • Hadoop源码分析四远程debug调试
    1、 hadoop远程debug 从文档(3)中可以知道hadoop启动服务的时候最终都是通过java命令来启动的,其本质是一个java程序。在研究源码的时候debug是一种很重要的...
    99+
    2022-11-12
  • IDEA实现远程Debug调试(附上Demo代码)
    目录 一、 前提二、 IDEA中如何实现远程Debug模式(1)、创建demo项目(2)、引入依赖(3)、创建启动类和创建demo(4)、配置idea 二、 IDEA的Debug的优缺点...
    99+
    2023-10-24
    intellij-idea java ide
  • idea远程debug调试部署在tomcat上项目
    目录一、IDEA添加Remote二、服务器配置三、开始debug调试本机场景:spring boot项目部署在腾讯云服务器的tomcat里。注意:要保证本地的代码与服务器上部署的代码...
    99+
    2022-11-12
  • Pycharm如何连接远程服务器并debug调试
    目录1 设置链接的账号密码:2.1 终端界面连接服务器:2.2 使用pycharm查看linux服务器上的各种文件,并且使用pycharm编辑器界面直接修改和保存代码。3 使用pyc...
    99+
    2022-11-11
  • python使用IPython调试debug程序
    目录安装使用方法优点提示和不足参考链接关于IPython使用的入门文章,主要介绍了如何在程序代码中嵌入ipython用于调试,并分析了优点与不足。 在 Python 中编程时,我会花...
    99+
    2022-11-13
  • PHP入门指南:PHP调试
    PHP是一种流行的编程语言,无论是网站开发还是桌面应用程序开发,PHP的应用都非常广泛。如果你正在学习PHP,那么你应该知道,调试是你编写代码的一个重要环节。在PHP程序中,你可能会遇到各种各样的问题,例如程序运行缓慢、调用无效、服务器响应...
    99+
    2023-05-22
    PHP调试 PHP入门 PHP指南
  • 因不会远程debug调试我被项目经理嘲笑了
    目录1,远程DEBUG的必要性2,IDEA构建SpringBoot测试Demo3,测试Demo项目配置支持远程调试4,IDEA打包jar5,启动jar并且带启动参数支持远程调试6,I...
    99+
    2022-11-12
  • 优秀程序猿调试技巧Debug与Release
    目录Bug调试的重要性调试基本步骤Debug与Release快捷键如何写出易于调试(优秀)的代码常见的coding技巧Bug bug意为臭虫,计算机术语里就是幺蛾子,对,你的程序又出...
    99+
    2022-11-13
  • Java平台调试体系原理分析和实践整理远程Debug
    目录一、原理分析(一)介绍(二)IDEA和eclipse 调试原理为(三)架构体系二、远程调试实例三、JDI工具代码实践(一)JDI技术架构(二)实践案例总结一、原理分析 (一)介绍...
    99+
    2023-03-09
    Java平台调试体系 Java远程Debug Java Debug原理
  • PHP入门指南:Xdebug调试工具
    PHP是一种广泛应用的开源脚本语言,用于开发Web应用程序。Xdebug是一款优秀的PHP调试工具,它提供了很多强大的功能,非常适合用于开发和调试大型Web应用程序。本文将为大家介绍Xdebug的概念和如何使用它来进行PHP代码的调试。一、...
    99+
    2023-05-20
    PHP 调试工具 Xdebug
  • Python必备技能之debug调试教程详解
    目录一、debug环境介绍二、debug按钮介绍哈喽兄弟们,今天来分享一下,Python初学者必须要学会的技能,Python进行debug操作。 本文用的测试代码: from tor...
    99+
    2023-03-19
    Python debug调试 Python debug
  • IDEA Debug如何实现多线程调试断点
    这篇文章主要介绍了IDEA Debug如何实现多线程调试断点,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。多线程调试断点Intellij IDEA 的debug断点...
    99+
    2023-06-27
  • jmeter调试错误全集(入门必备)
    目录一、前言二、通过查看运行日志调试问题三、通过添加察看结果树调试问题四、通过添加调试取样器调试问题五、开启用户代理,结合fiddler抓包工具调试问题六. 总结一、前言 在使用jm...
    99+
    2022-11-12
  • phpstorm+xdebug远程调试
    远端:centos7 phpstorm在windows上。 centos7上同上一篇文章, [xdebug] zend_extension="xdebug.so" xdebug.remote_enable = 1 xdebug.remote...
    99+
    2023-09-11
    phpstorm php ide
  • vscode远程调试php
    使用vscode远程调试php的方法 安装remote ssh插件 2.连接服务器 可以点击左下角的绿色按钮,或者ctrl+shift+p打开命令框输入remote ssh应该也有。 3.在服务器...
    99+
    2023-09-08
    vscode php
  • mysql入门以及远程访问
    MySQL 数据库的使用 一、MySQL 简介 1什么是 MySQL MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关系型数据库管理系统,关系型数...
    99+
    2018-08-26
    mysql入门以及远程访问 数据库入门 数据库基础教程 数据库 mysql
  • NodeJS测试框架mocha入门教程
    NodeJS里最常用的测试框架估计就是mocha了。它支持多种node的assert libs, 同时支持异步和同步的测试,同时支持多种方式导出结果,也支持直接在browser上跑Javascript代码测...
    99+
    2022-06-04
    框架 入门教程 测试
  • pycharm远程调试openstack代码
    本文实例为大家分享了pycharm远程调试openstack的具体代码,供大家参考,具体内容如下 1.安装pycharm专业版 本文安装pycharm 2016.2.3专业版。网上教程较多,这里不做详细介绍...
    99+
    2022-06-04
    代码 pycharm openstack
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作