DNSBrood 解析 DNS 过程中进行 Debug

本贴最后更新于 2689 天前,其中的信息可能已经时异事殊

DNSBrood 是一款基于 dnsJava 的 DNS server,尚处于开发过程中,所以需要在其解析 DNS 的过程中进行 Debug 测试。但出于一些原因,Debug 必须在其打包好且正在运行的 Jar 包上进行。所以我将尝试 IDEA 的 Remote 远程 Debug 功能来进行测试工作。

DNSBrood

IDEA 配置 Remote

  • 进入 IDEA 的 Edit Configure 页面

  • 在 add new configure 选项里面选择 remote

  • 相应视图如下:

    1.pic.jpg

    将红框框住的内容复制,用于下文的修改启动脚本,当然,这里有三段脚本内容,具体选择哪一段要视自己的实际情况来定。

  • 点击确定。

修改启动脚本

修改启动脚本 blackhole.sh

首先设置两个变量:

JVM_OPTION="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
HOME_JAR=/yourpath/target/blackhole-1.2.2.jar

然后修改 start:

start)

 echo "Starting blackhole..."

 java -jar ${JVM_OPTION} -Djava.io.tmpdir="$HOME_DIR/cache" $HOME_JAR -d"$HOME_DIR">> $HOME_DIR/log &

 ;;

在修改 restart:

restart)

 echo "Stopping blackhole..."

 java -jar $HOME_DIR/lib/wifesays-1.0.0-alpha.jar -cshutdown > /dev/null;

 sleep 2;

 echo "Starting blackhole..."

 java -jar ${JVM_OPTION} -Djava.io.tmpdir="$HOME_DIR/cache" $HOME_JAR -d"$HOME_DIR">> $HOME_DIR/log &

 ;;

接下来启动 DNSBrood,打开日志文件,如果有:

Listening for transport dt_socket at address: 5005

就说明配置正确

断点测试

因为整个项目是通过 socket 来判断用户处理 DNS 解析的请求,所以我们在运行 DNSBrood 的时候,还需要 DNSBee 来配合使用,两个系统的使用这篇博文先不多讲。

这里我们在 us.codecraft.wifesays.me.HusbandEar 这个类的 process 方法的

logger.info("wife says \"" + lineIn + "\" ,what you should do?");

这行代码上设置断点,然后通过 DNSBee 发送一段请求:

17-07-12 10:17:44,908 INFO us.codecraft.wifesays.me.HusbandEar(HusbandEar.java:83) ## wife says "delete_zones_ip_127.0.0.1" ,what you should do?

17-07-12 10:17:44,908 INFO us.codecraft.wifesays.me.HusbandEar(HusbandEar.java:83) ## wife says "add_zones_ip_127.0.0.1:6.7.4.5_gmail.liumapp.com" ,what you should do?

line is :127.0.0.1:6.7.4.5_gmail.liumapp.com

17-07-12 10:17:44,910 INFO us.codecraft.wifesays.me.HusbandEar(HusbandEar.java:83) ## wife says "add_zones_ip_127.0.0.1:55.55.55.55_gg.liumapp.com" ,what you should do?

line is :127.0.0.1:55.55.55.55_gg.liumapp.com

17-07-12 10:17:44,912 INFO us.codecraft.wifesays.me.HusbandEar(HusbandEar.java:83) ## wife says "add_zones_ip_127.0.0.1:88.88.88.8_tt.liumapp.com" ,what you should do?

line is :127.0.0.1:88.88.88.8_tt.liumapp.com

如果 IDEA 出现如下 Debug 信息:

2.pic.jpg

那就说明 Debug 测试成功了。

  • DNS
    25 引用 • 20 回帖 • 1 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...