iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 9
2
Modern Web

Node.JS - 30 天入門學習筆記系列 第 9

Day9 - node.js 內建除錯

  • 分享至 

  • xImage
  •  

今天,進入鐵人賽第九天。
由於,今天把session的筆記做完稿,所以,來晚了。
我們不多說,直接看一下node.js的除錯的部份。

這邊,我們來學習 debug node.js 用三種不同的工具。

  1. Node.js 原有的debugger
  2. Node Inspector
  3. Build-in debugger in IDEs

Node.js 內建的debugger

在Node.js 裡,本身就提供了內建無圖形的debugging工具,我們可以隨便打開一個檔案,看看如何使用。

1.我們這裡以 上一篇 讀取開啟檔案的程式碼 orfile.js 為例
http://ithelp.ithome.com.tw/upload/images/20161209/201035264znAiYCg8l.png

2.接著,進入 command prompt 執行 debugger:
node debug orfile.js

3.此時,可以看到程式進入debugging 模式。你可以看到>符號,指向目前debugging 的程式行。
http://ithelp.ithome.com.tw/upload/images/20161209/20103526X2kqgg02bq.png

4.我們可以再在 debug> 輸入next (或n),debugging 下一個程式區段。
http://ithelp.ithome.com.tw/upload/images/20161209/20103526InF98mi3qV.png

5.如果我們想要執行到下一個 debugger; ,則在 debug>輸入 cont (或c)
http://ithelp.ithome.com.tw/upload/images/20161209/20103526K8p9W20RMt.png

設定中斷點break-point

我們也可以在debug的過程中,設定中斷點break-point。

使用方法如下:

  • setBreakpoint(), sb() – 設定中斷點於目前所在行數
  • setBreakpoint(line), sb(line) – 設定中斷點給特定行數
  • setBreakpoint(‘fn()’), sb(…) – 設定中斷點在函式的第一句
  • setBreakpoint(‘script.js’, 1), sb(…) – 設定中斷點,在指定檔名的第一行。(用於程式中有載入別的檔案時)
  • clearBreakpoint(‘script.js’, 1), cb(…) – 清除中斷點,在指定檔名的第一行。(用於程式中有載入別的檔案時)

http://ithelp.ithome.com.tw/upload/images/20161209/20103526RembBbH48t.png

watch, watchers

如果,我們在debug過程中,想要查看一些資訊,例如,變數/參數…,可以用watch(“exp")
比方,執行到第3行想看 fd;執行到第17行,想看bytes,這時候,我們可以分別在debugging 執行所在位置, debug> 輸入watch("fd") , 及 watch("bytes")

最後,我們再用 watchers,看到所有設定的watch資訊。如圖:
http://ithelp.ithome.com.tw/upload/images/20161209/20103526DSObDfVEep.png

如果,我們要刪除某項watch資訊,則,可用 unwatch(“exp")
http://ithelp.ithome.com.tw/upload/images/20161209/20103526xFbZh1jU7w.png

常用的內建debug指令

  • next, n 執行至下一行。
  • cont, c 繼續執行並停在下一個debuggers;
  • step, s 進入函式逐一除錯。
  • out Step, o 跳出函式的逐一除錯。
  • watch 加入表示式及變數至watch
  • watcher 查看所有被加入的watch的值。
  • Pause 暫停執行程式。

更完整的資訊,可以去官網看 Debugger


上一篇
Day8 - Node.js 檔案系統
下一篇
Day10 - Node Inspector
系列文
Node.JS - 30 天入門學習筆記32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言