nodejs代碼怎麼打斷點(JS打斷點)

本文目錄一覽:

WebStorm3.0 調試nodejs 怎麼添加斷點

如果你的程序要在啟動時就開始捕捉,建議在開始前預留幾秒的睡眠時間。

在webstorm調試的有個地方默認是選中,請去掉。

不要選中最後的紅色雷電標誌。

如何調試nodejs

1. 基於Nodejs內建的調試器

Nodejs提供了一個內建調試器來幫助開發者調試應用程序。想要開啟調試器我們需要在代碼中加入debugger標籤,當Nodejs執行到debugger標籤時會自動暫停(debugger標籤相當於在代碼中開啟一個斷點)。代碼如下:

var path = url.parse(req.url).pathname;

debugger;

res.writeHead(200, {‘Content-Type’: ‘text/plain’});

執行命令:node debug example.js 就可以進入調試模式。

在debug模式下,可以使用內建命令如repl去評估變數和表達式的值(如2所示)。我們也可以通過help命令來獲取完整的調試命令列表。

Commands: run (r), cont (c), next (n), step (s), out (o), backtrace (bt), setBreakpoint (sb), clearBreakpoint (cb),

watch, unwatch, watchers, repl, restart, kill, list, scripts, breakpoints, version

2. 基於V8插件的調試器

Nodejs是基於google V8的引擎上構建的,Google為Eclipse提供了一個對應的調試插件。關於如何在Eclipse中安裝和調試Nodejs程序就不再重複描述了,網上已經有很多的文章了(具體可以參考這篇文章)。唯一要注意的是在默認情況下V8引擎支持的調試模式是本地模式。如果想要開啟遠程調試的話,我們需要修改Nodejs中的V8源文件:/deps/v8/src/platform-posix.cc

addr.sin_family = AF_INET;

addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); — INADDR_ANY

addr.sin_port = htons(port);

然後重新編譯Nodejs。

提示:

用插件來調試nodejs程序,你有時候會遇到什麼connect refuse, get version failed等等錯誤。那麼請注意你使用的ip的地址, 一般下127.0.0.1的迴環地址是都工作的。如果你使用真實的ip地址,請檢查防火牆設置。

3. 基於Chrome瀏覽器的調試器

既然我們可以通過V8的調試插件來調試,那是否也可以借用Chrome瀏覽器的JavaScript調試器來調試呢?node-inspector模塊提供了這樣一種可能。我們需要先通過npm來安裝node-inspector

npm install -g node-inspector // -g 導入安裝路徑到環境變數

node-inspector是通過websocket方式來轉向debug輸入輸出的。因此,我們在調試前要先啟動node-inspector來監聽Nodejs的debug調試埠。

默認情況下node-inspector的埠是8080,可以通過參數–web-port=[port]來設置埠。在啟動node-inpspector之後,我們可以通過–debug或–debug-brk來啟動nodejs程序。通過在瀏覽器輸入http://[ip address]:8080/debug?port=5858,我們會得到如下的調試窗口:

這三種方法各自有優缺點,我個人比較欣賞node-inspector的方式。

具體可以參考這個帖子:

nodejs如何打斷點調試程序

應該是出錯了內存泄露,導致死掉,看看你動態分配的內存吧。

舉個例子,你利用嚮導生成一個程序,調一下,看看死機嗎?不可能吧。如果那都死機,說明你的VC安裝程序有問題,再或者是硬體有問題。

怎麼結束node.js serverside javascript

核心API支持一種事件驅動的體系結構,在這種體系結構中,對象(稱為「發射器」)周期性地發出命名事件,這些事件導致函數對象(「偵聽器」)被調用。例如,每當一個對等點連接到它時,當文件被打開時,或者當數據被讀取時,就會發出事件。

一類是非常重要的,這是EventEmitter類。發出事件的所有對象都是這個類的實例。他們暴露on() EventEmitter。功能,允許一個或多個功能被連接到命名物體發出的事件。

當EventEmitter對象發出一個事件,所有連接到這個特定的事件稱為同步功能。另一個重要概念是流。它是一個抽象介面,可以通過例如對HTTP伺服器的請求來實現。流是可讀的、可寫的,或者兩者都是(雙工的)。

所有數據流都eventemitters,但他們也有其他的自定義方法和屬性,取決於他們是否可讀,可寫,或雙。如果流既可讀又可寫,則它實現所有的方法和事件。因此,一個雙工或轉換流完全由這個API描述,儘管它們的實現可能有些不同。

雖然很多東西可以告訴如何利用Node.js為您的網站,我會結束這後一個簡單的「Hello World」的例子如何創建您的第一個Node.js後端代碼。

創建一個名為「myfirstnode文件。JS」,然後添加以下代碼:

const http = require(‘http’);

http.createServer( (request, response) = {

  response.writeHead(200, {‘Content-Type’: ‘text/plain’});

  response.end(‘Hello World\n’);

}).listen(8124);

console.log(‘Node.js server now running at 

);

執行以下命令啟動伺服器:

$ node MyFirstNode.js

Server running at

測試瀏覽器中的鏈接會產生一個可預測的結果:

如何使用DevTools調試Nodejs運行的Javascript

目前,常用的瀏覽器IE、Chrome、Firefox都有相應的腳本調試功能。我們先來看IE的:

1、在F12開發人員工具中進行調試

打開IE瀏覽器,按下F12鍵,就會打開開發人員工具,這是IE內置的開發人員開發工具,方便開發人員對HTML、CSS、Javascript等網頁資源進行跟蹤調試使用的。

如果你打開的時候沒有固定在網頁底部,可以點擊右上角菜單欄中的按鈕來完成。

我們看到在這個工具窗口裡面有幾個標籤頁,分別是:HTML、CSS、控制台、腳本、探查器和網路,點開每一個標籤,可以執行相應的任務。

在HTML標籤窗口中,工具欄中的按鈕所執行的操作如下圖:

CSS標籤是用來查看樣式的;控制台顯示網頁中JS的各種輸出信息,包括錯誤信息、用戶日誌等;打開腳本標籤頁,這裡面才是我們想要的內容。

我在圖中用黃色矩形選中連個控制項,左側的下拉列表用來選擇文件,右側的按鈕用來啟動調試。當點擊啟動調試後,調試程序會將窗口最大化,我們在選中的文件中找到需要調試的位置,點擊左側邊欄添加斷點即可進行調試。

當有程序運行到我們的斷點處時,就可以進行調試了:

在這裡,我們可以使用快捷鍵進行操作,常用的快捷鍵如下:

F9:添加/移除 斷點

F10:逐過程,即跳過該語句中的方法、表達式等

F11:逐語句調試,即單步調試,會跳入方法、表達式,進行逐語句的跟蹤調試

在執行過程中,如果我們要執行即時的代碼,我們就需要在右側的窗格中輸入代碼,按回車即可:

如果要執行多行代碼,點擊運行按鈕右側的雙箭頭,就會打開多行模式。我就不再截圖片了。

這種直接在瀏覽器中調試的方法同樣適用於Google瀏覽器Chrome和FireFox FireDebug,只不過在細枝末葉上面有些不同罷了,主體的功能都是一樣的。

按F12鍵進入開發者工具,可以查看源代碼、樣式和js:

點擊Scripts按鈕,可以打開這個調試窗口,裡面包含了網頁中腳本文件源碼,點擊左側的按鈕可以打開選擇文件的側窗口。

2、使用debugger關鍵字進行調試

這種方法很簡單,我們只需要在進行調試的地方加入debugger關鍵字,然後當瀏覽器運行到這個關鍵字的時候,就會中斷:

設置以後就可以使用debugger關鍵字進行調試了;進過這樣的設置,我們還可以捕獲到意外的錯誤,進行跟蹤調試。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/287116.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-23 13:08
下一篇 2024-12-23 13:08

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在著手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 怎麼寫不影響Python運行的長段代碼

    在Python編程的過程中,我們不可避免地需要編寫一些長段代碼,包括函數、類、複雜的控制語句等等。在編寫這些代碼時,我們需要考慮代碼可讀性、易用性以及對Python運行性能的影響。…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29

發表回復

登錄後才能評論