Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Node.js
Code

用Node.js調試

by
Difficulty:IntermediateLength:ShortLanguages:

Chinese (Traditional) (中文(繁體)) translation by Stypstive (you can also view the original English article)

我感覺調試是開發週期中至關重要的一環。 所以,搞清楚調試任務,讓它容易一些、耗時少一些,讓我們準時完成工作並減少壓力,總歸是一種良好的實踐。

和大多數其它主流語言一樣,Node也提供了一些優秀的調試工具,讓我們可以容易地找到和修復代碼中的缺陷。 我總是不遺餘力地推薦使用調試器,因為個人而言,我發現調試器真的可以消除任何黑箱猜測,並且一般來說會讓我們開發者得到提升。

這個指南針對的是已經開始使用Node的開發者和管理員。 我假設這部分讀者對這個語言的理解已經到了實用的程度。

使用調試器

Node.js包含了一個全功能的進程外調試工具和一個內置的調試客戶端,可用一個簡單的基於TCP的協議來訪問。

比如,使用這個調試器調試一個名為script.js的文件,你只需要用debug標記來調用node,即:

斷點

現在你啟動了一個調試會話,而在腳本中任何調用了debugger的位置就將成為調試器的一個斷點。

讓我們可script.js中添加一個調試語句:

現在,如果我們執行此腳本,則調試器會調用我們的斷點,然後,我們可以用過contnext命令 (縮寫為cn)來控制腳本運行。

我們可以在任何時候通過p來暫停腳本的執行。

REPL

調試器的讀取-執行-打印-循環 (REPL) 讓你可以在執行過程中交互式地輸入代碼,因而可訪問到應用程序的狀態,中斷處所有的變量和方法。 這是一種很強大的工具,讓你可以快速地改良你的代碼。

一般而言,REPL是調試器的一部分,但它也獨立存在的,你可以交互式地用它來執行JavaScript代碼。 比如,在命令行中不帶任何選項地執行node,你就會得到一個REPL界面,然後你可以在它裡面寫代碼並看到輸出。

步入和步出

前面我提到了contnext命令 (cn),它們可用於到達斷點後代碼的繼續執行。 除此之外,在我們遍歷代碼時,我們也可以步入一個方法,或步出到它的父作用域中。

使用step來步入,使用out來步出,或用簡寫so代替。

反射追踪

使用backtracebt來打印當前執行幀的反向追踪輸出。

重啟

使用restartr來重啟腳本,讓它從頭開始執行。

控制調試器的其它方式

高級用戶也可用--debug命令行參數啟動Node.js來訪問調試器,或者向已經運行的Node.js進程發送一個SIGUSR1信號。

一旦一個進程用這種方法進入了調試模式,我們可以用Node.js調試器來連接它,訪問監聽狀態的調試器的方式可以是運行進程的pid,也可以是URL地址 (比如localhost:port)

  • node debug -p 是通過pid來訪問進程。
  • node debug<URI> 是用過URL來連接進程,比如localhost:5858

使用Node Inspector

除了命令行 (CLI) 調試工具,Node Inspector也提供了網頁瀏覽器內部的GUI調試器。

為使用這種調試器,只需要用如下方式安裝:

npm install -g node-inspector

現在,你已經安裝了Node Inspector,我們可用如下方式調試script.js:

node-debug script.js

你的命令行會輸出如下信息,如果你的Chrome或Opera瀏覽器是你操作系統上的默認瀏覽器,則同時也會用瀏覽器打開一個相應的URL地址。

在你的網頁瀏覽器中,你將可以在和開發者工具包類似的環境中調試你的應用程序。 設置斷點和查看代碼在你的瀏覽器視圖中集成起來了。 盡情享受吧!

結論

調試並不一定是一個噩夢,也不一定充滿壓力。

設置斷點和逐步執行代碼在Node也能如此簡單。 這和Ruby有著相同的使用體驗。如果你想理解某個應用程序,用調試模式打開並暫停執行酷炫極了,可讓你以極快的速度學習。

Envato qr branded
关注我们的公众号
Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.