jdb调试scala代码的简单介绍

在linux调试C/C++的代码需要通过gdb,调试java代码呢?那就需要用到jdb工具了。关于jdb的用法在网上大家都可以找到相应的文章,但是对scala进行调试的就比较少了。其实调试的大致流程都是一样的,只是需要注意一些细节的地方就可以了。下面就来简单说明一下。在这里关于scala和jdk的配置问题就不再详述了,下面进入正题吧。

首先放上调试用的scala代码hello.scala

object hello {
    def main(args: Array[String]): Unit = {
        println("Hello, world!")
        var a = 10
        var b = 20
        var c = a + b
        println(c)

        var d = 1 + a;
        if(d == 11) {
          println("aaaaaaaaa")
        }
    }
}

有了文件后需要通过下面的命令将其编译成虚拟机识别的字节流。关于scalac的参数可以通过scalac -help进行查看。

scalac -g:vars hello.scala

命令执行后会发现目录下生成了两个文件:hello.class  hello$.class

如果你同过java直接运行的话会出现如下的错误,这是因为你没有指定scala的jar包。

如果你想通过java来运行的话指定了classpath也是可以的,这个对后面jdb调试scala是很重要的。

当然通过scala hello是可以正确运行的。 当然你不手动编译生成字节流文件直接运行scala hello.scala也是可以的。

不知道什么原因导致在linux上通过scala hello.scala会崩溃。我怀疑可能是我机器的内存太小导致的,因为是使用的vps的memory只有512M!!!。不过scala hello.scala在win上运行是可以通过的。

以上都是准备工作现在是到了调试的时候了。

图中的差异请自行补脑,因为我自己也没怎么搞清楚,貌似是scala中的object造成的。 有熟悉这个的话希望大家能下来后多多交流,在这里表示感谢了哈。

有兴趣的话可以去http://scala-language.1934581.n4.nabble.com/debugging-scala-programs-td1943959.html看下Chris Waterson的评论。

因为是第一次写博客心里也没有谱,有问题的地方请大家指正。格式比较丑陋,大家多多包涵哈!^_^

时间: 2024-08-05 14:26:26

jdb调试scala代码的简单介绍的相关文章

Android jni aes加解密,实现文件的加解密,具体实现可以自行修改,上面的代码为简单介绍,下面的是JNI端实现文件加解密,可以修改为字符串加解密

#include "aes.h" #include "modes.h" #include "e_os2.h" #include "aes_locl.h" #include "opensslconf.h" AES_KEY aes; //aes cbc模式加解密用到的向量 unsigned char iv[AES_BLOCK_SIZE]; for (i = 0; i < AES_BLOCK_SIZE; i

Android调试常用的工具简单介绍

配置Android环境的时候,我们需要安装sdk.在sdk的目录下: platform-tools 目录下的adb tool下的: ddms.bat adb :可以cd 当前目录,然后使用相应的命令,你可以使用adb help 查看相应的.我们可以用他将apk安装到我们的设备上.例如 adb install apk路径 ,就会安装到们的设备 ddms.bat :启用android查看日志log,方便我们的调试

PHP在浏览器上跟踪调试的方法以及使用ChromePhp、FirePHP的简单介绍

之前用ThinkPHP时发现有个 trace 函数可以跟踪调试,感觉很有意思,网上搜索了下类似的东西,发现了 ChromePhp ,以前没想过这样来调试 PHP 程序,感觉非常方便,很有用. ThinkPHP 使用的是自己生成的 HTML 随模版一起输出来显示,偶尔会遇到一些莫名其妙的问题,效果不是太好, 还有一些也是类似的方法,但输出的主要是在模版中增加 JS 代码,调用浏览器的调试方法进行输出调试 如 console.log('PHP的一些调试输出内容'); ChromePhp 是通过hea

内核调试神器SystemTap — 简单介绍与使用(一)

a linux trace/probe tool. 官网:https://sourceware.org/systemtap/ 简单介绍 SystemTap是我眼下所知的最强大的内核调试工具,有些家伙甚至说它无所不能:) (1) 发展历程 Debuted in 2005 in Red Hat Enterprise Linux 4 Update 2 as a technology preview. After four years in development, System 1.0 was rel

scala简单介绍

前言 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性. Scala 运行在Java虚拟机上,并兼容现有的Java程序. Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库. Scala跟JAVA很像,假如你之前已经掌握了JAVA,那么学习Scala将会简单很多 简介 Scala 是 Scalable Language 的简写,是一门多范式的编程语言 联邦理工学院洛桑(EPFL)

Android平台Camera实时滤镜实现方法探讨(十)--代码地址以及简单介绍(20160118更新)

简单做了个相机和图片编辑模块,时间原因非常多功能还没有做.尚有BUG,见谅,将在以后抽时间改动 代码地址 PS:请点个Star^-^ ----------------------------------------------------------------------------------------------------------------- 简单介绍: 1.眼下包括Instagram中19个滤镜,比如amaro,branan,earlybird,freud,hefe,lomo,

unity Dotween插件的简单介绍及示例代码

unity里面做插值动画的插件有许多,比较常见的有itween.hotween.dotween.根据大家的反馈和实际体验来说,dotween插件在灵活性.稳定性.易用性上都十分突出.这里简单介绍下它的用法,并在后文做了一些效果示例,还是不错的. 所谓"插值动画",顾名思义就是在两个值中插入其他的值来实现动画.原理非常简单,比如想让某个物体从A地到达B地,我们只知道A和B的坐标,插值动画就可以根据"缓动函数"确定A.B间的其他值,来实现物体从A到B的"运动过

远程debug调试java代码

远程debug调试java代码 日常环境和预发环境遇到问题时,可以用远程调试的方法本地打断点,在本地调试.生产环境由于网络隔离和系统稳定性考虑,不能进行远程代码调试. 整体过程是通过修改远程服务JAVA_OPTS参数,然后本地通过Eclipse或IDEA等工具调试. 下面简单介绍下理论. 理论 JPDA(Java Platform Debugger Architecture)是Java平台调试体系结构的缩写.由3个规范组成,分别是JVMTI(JVM Tool Interface),JDWP(Ja

JSF简单介绍

JSF简单介绍 一. 什么是 JSF: JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架.它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发. JavaServer Faces于2004年三月1.0版正式提出,清楚的将Web应用程序的开发者划分了三个角色:网页设计人员.应用程序设计人员以及UI组件开发者. 从使用的角度来看,网页设计人员与应用程序设计人员能够他们所熟悉的方式开发程序,而不用侵入彼此的工作范围,而U