下面演示在docker中调试代码。

  使用vulhub作为演示。

  下载vulhub,进入vulhub/fastjson/vuln/

    编辑docker-compose.yml ,在最后新建一行加入  - "8081:8081"   然后开始编译和运行环境

    docker-compose build

    docker-compose up -d

  环境起来以后,进入到环境里面

    docker exec -it 0dbf6abbf1d7 bash

    接着进入/usr/local/tomcat/bin   文件夹下编辑catalina.sh

    关于docker里面编辑文件有几种方式(apt-get update ,apt-get install vim或者docker cp ./catalina.sh 0dbf6abbf1d7:/usr/local/tomcat/bin/catalina.sh) ,

    加入下面一句话开启debug选项,Ubuntu平台下的Tomcat的debug开启命令和CentOS下的Tomcat开启debug命令不一样

       Ubuntu: CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8081,server=y,suspend=n"

       CentOS:  declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"

    然后把docker环境中的webapps文件夹拷贝到宿主机中,用idea使用import 选项打开webapps文件夹

    在右上角run键附近点击,新建debug Configurations,选择+号->Remote ,并且设置jdwp的端口和IP

    在需要下断点的地方设置断点,在浏览器上访问8080(并不是jdwp的端口)就能断下来了。

    

    

为什么会有这篇文章,我遇到的问题:

我手里有一个可部署的war包,没有源码,在远程已经部署完毕。这时我想调试那个远程应用,怎么做呢?

解压缩war包到一个文件夹,然后用Intellij Idea打开这个文件夹,如图的结构,编译的Class都在 WEB-INF/classes 目录下

找到我要debug的那个class, 这里示例Handler.class, 通过Idea反编译出来的类代码,拷贝到一个新的文件Handler.java

虽然如图可以看到各种的编译错误,但是完全不影响你启动,代码中加断点和调试哦。

可能会有行格式显示错位的问题,导致断点断错或者断不下来,多断几个地方就好了

 
 
接着去学习调试这个洞:http://www.polaris-lab.com/index.php/archives/613/
 

----2019.3.7号----分割,调试Jenkins。

命令: 

docker run -p 8084:8080 -p 8089:8089 --env JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8089,server=y,suspend=n" 772f6f5b7485

 其中772f6f5b7485是镜像ID,镜像参考https://hub.docker.com/r/h1kkan/jenkins-docker/

参考:

  https://github.com/vulhub/vulhub

  https://www.jianshu.com/p/d168ecdce022

  

使用IEDA远程调试的更多相关文章

  1. 微信公众号开发之VS远程调试

    目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流 ...

  2. tomcat开发远程调试端口以及利用eclipse进行远程调试

    一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里:  SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...

  3. Visual Studio 2012远程调试中遇到的问题

    有的时候开发环境没问题的代码在生产环境中会某些开发环境无法重现的问题,或者需要对生产环境代码进行远程调试该怎么办? Vs已经提供给开发者远程调试的工具 下面简单讲讲该怎么用,前期准备:1.本地登录账户 ...

  4. 使用Eclipse进行远程调试

    转自:http://blog.csdn.net/sunyujia/article/details/2614614 今天决定做件有意义的事,写篇图文并茂的blog,为什么要图文并茂?因为很多事可能用语言 ...

  5. 微信公众号开发系列教程一(调试环境部署续:vs远程调试)

    http://www.cnblogs.com/zskbll/p/4080328.html 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试 ...

  6. tomcat 远程调试

    1.服务端查看cataline.sh 中的描述  cataline jpda start 开启服务端远程调试 远程调试端口JPDA_ADDRESS="8000" 2.本地代码参考  ...

  7. 在Visual Studio上开发Node.js程序(2)——远程调试及发布到Azure

    [题外话] 上次介绍了VS上开发Node.js的插件Node.js Tools for Visual Studio(NTVS),其提供了非常方便的开发和调试功能,当然很多情况下由于平台限制等原因需要在 ...

  8. [教学] Delphi Berlin 10.1 开发 Windows 10 平板 App 远程调试

    Delphi Berlin 10.1 开发 Windows 10 平板 App 远程调试安装步骤: 准备电脑: 一台开发电脑,安装 Delphi 开发环境 一台平板电脑,安装 PAServer,安装方 ...

  9. Xdebug文档(七) 远程调试

    Xdebug提示调试客户端接口与PHP运行相联系.该章节解释如何设置PHP与xdebug,并推荐一些客户端. 介绍 Xdebug的远程调试器允许你检查数据结构,交互式地穿过和调试你的代码.该协议已经开 ...

随机推荐

  1. Hadoop3集群搭建之——安装hadoop,配置环境

    接上篇:Hadoop3集群搭建之——虚拟机安装 下篇:Hadoop3集群搭建之——配置ntp服务 Hadoop3集群搭建之——hive安装 Hadoop3集群搭建之——hbase安装及简单操作 上篇已 ...

  2. 2018.10.29 bzoj3718: [PA2014]Parking(树状数组)

    传送门 显然只用判断两个会相交的车会不会卡住就行了. 直接树状数组维护后缀最大值就行了. 代码: #include<bits/stdc++.h> using namespace std; ...

  3. IBM X3650 M3/M4的服务器装系统

    IBM X3650 M3/M4的服务器一般都有两块以上的硬盘.所以如果没有做RAID,那首先应该做好raid 磁盘阵列.本文装系统的前提是RAID已经做好. 一般安装系统的方式为先在IBM官网下载对应 ...

  4. 将项目部署到 github上(部署到码云操作一样,前提是有码云账号)

    来源:http://www.cnblogs.com/fengxiongZz/p/6477456.html 首先你需要自己的网页文件(俗称项目) 第一步:登录到Github上,新建一个repositor ...

  5. TortoiseGit使用笔记

    不喜欢敲命令行,或者用惯TortoiseSVN的也可以使用TortoiseGit 1. TortoiseGit安装 安装很简单,默认安装就可以.需要安装以下几个软件: l Git-2.14.3-64- ...

  6. google pay app权限使用说明

    android.permission.CAMERA. 个人中心使用头像时需要使用该权限. android.permission.READ_PHONE.获取用户DeviceId,作为用户单点登录唯一值.

  7. 第32章:MongoDB-索引--Capped固定集合

    ①Capped集合(固定集合) Capped集合的大小固定,性能好,如果空间用完了,新的对象会覆盖旧的对象. find时默认就是插入的顺序,Capped集合会自动维护. ②语法 db.createCo ...

  8. Node简单的控制台读取和文件操作

    const fs = require('fs'); const readline = require('readline'); const rl = readline.createInterface( ...

  9. PHP上传文件参考配置大文件上传

    PHP用超级全局变量数组$_FILES来记录文件上传相关信息的. 1.file_uploads=on/off 是否允许通过http方式上传文件 2.max_execution_time=30 允许脚本 ...

  10. day25(令牌机制)

    令牌机制 作用:处理页面重复提交,造成数据多次写入数据库. 使用方法: 类似于验证码机制,使用session记录一个不可能重复的值(Uuid)在访问controller时对session进行校验. / ...