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的評論。

 

因為是第一次寫博客心里也沒有譜,有問題的地方請大家指正。格式比較丑陋,大家多多包涵哈!^_^

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM