bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

vscode中debugger怎么用

這篇文章將為大家詳細講解有關vscode中debugger怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創新互聯是一家專業提供劍川企業網站建設,專注與成都網站制作、成都做網站、成都h5網站建設、小程序制作等業務。10年已為劍川眾多企業、政府機構等服務。創新互聯專業網絡公司優惠進行中。

debugger 原理

運行 nodejs 代碼的時候,如果帶上了 --inspect(可以打斷點) 或者 --inspect-brk(可以打斷點,并在首行斷住) 的參數,那么就會以 debugger 的模式啟動:

vscode中debugger怎么用

可以看到,node 啟動了一個 web socket 的 server,地址是:ws://127.0.0.1:9229/78637688-e8e0-4582-80cc-47655f4bff66

為什么 debugger 要啟動一個 websocket server 呢?

debugger 的含義就是要在某個地方斷住,可以單步運行、查看環境中的變量。那么怎么設置斷點、怎么把當前上下文的變量暴露出去呢,就是通過啟動一個 websocket server,這時候只要啟動一個 websocket client 連接上這個 server 就可以調試 nodejs 代碼了。

v8 debug protocol

連上之后呢,debugger server 和 debugger client 怎么交流?這就涉及到了 v8 debug protocol。

通過兩邊都能識別的格式來交流,比如:

在 test.js 的 100 行 設置斷點:

{
    "seq":118,
    "type":"request",
    "command":"setbreakpoint",
    "arguments":{
        "type":"script",
        "target":"test.js",
        "line":100
    }
}

然后查看當前作用域的變量:

{
    "seq":117,
    "type":"request",
    "command":"scope"
}

執行一個表達式:

{
    "seq":118,
    "type":"request",
    "command":"evaluate",
    "arguments":{
        "expression":"a()"
    }
}

之后繼續運行:

{
    "seq":117,
    "type":"request",
    "command":"continue"
}

通過這種方式,client 就可以告訴 debugger server 如何執行代碼。

vscode中debugger怎么用

debugger client

debugger client 一般都是有 ui 的(當然,在命令行里面通過命令來調試也可以,但一般不這么做)。常見的 js 的 debugger client 有 chrome devtools 和 vscode debugger 等。

我們寫一個簡單的 js 腳本,通過 node --inspect-brk 跑起來:

vscode中debugger怎么用

可以看到它啟動在了 9229 端口,

然后,我們分別通過兩種 client 連上它。

chrome devtools

在 chrome 地址欄輸入 chrome://inspect,然后點擊 configure 來配置目標端口:

vscode中debugger怎么用

把剛才的端口 9229 填上去:

vscode中debugger怎么用

然后就可以看到 chrome 掃描到了這個 target,點擊 inspect 就可以連上這個 debugger server。

vscode中debugger怎么用

vscode中debugger怎么用

之后就可以設置斷點、單步執行、執行表達式、查看作用域變量等,這些功能都是通過 v8 debug protocol 來實現的。

vscode debugger

在 vscode 里面寫代碼,在 chrome devtools 里調試比較麻煩,vscode 也實現了 debugger 的支持,可以直接用 vscode 來調試。

使用vscode 調試能力的方式是修改項目根目錄下的 .vscode/launch.json 配置。

attach

點擊右下角的按鈕來添加一個配置項。這里選擇 nodejs 的 attach:

vscode中debugger怎么用

因為已經通過 node --inspect-brk 啟動了 websocket 的 debugger server,那么只需要啟動 websocket client,然后 attach 上 9229 端口就行。

vscode中debugger怎么用

點擊左側的按鈕,就可以連上 debugger server 開始調試:

vscode中debugger怎么用

launch

這樣先通過 node --inspect-brk 啟動 debugger server,然后再添加 vscode debug 配置來連接上太麻煩了,能不能把這兩步合并呢?

當然可以,只要添加一個 launch 的配置:

vscode中debugger怎么用

vscode中debugger怎么用

這里的 type 是 launch,就是啟動 debgger server 并且啟動一個 debugger client 連接上該 server。運行的程序是根目錄下的 index2.js,還可以設置 stopOnEntry 來在首行斷住。

點擊調試,就可以看到能夠成功的調試該 js 文件。

vscode中debugger怎么用

vscode 會啟動 debugger server,然后啟動 debugger client 自動連接上該 server,這些都不需要我們去關心。

這樣我們就可以成功的使用 vscode debugger 來調試 nodejs 代碼。

vscode debugger 進階

debugger client 中我們最常用的還是 vscode,這里著重講一下 vscode debugger 的各種場景下的配置。

sourcemap

如果調試 ts 代碼,肯定不能調試編譯后的代碼,要能夠映射回源碼,這個是 sourcemap 做的事情。調試工具都支持 sourcemap,比如 chrome devtools 和 vscode debugger,都支持文件末尾的 sourcemap url 的解析:

//# sourceMappingURL=index.js.map

這樣當調試 index.js的時候,如果它是 ts 編譯的出來的,就會自動找到對應的 ts。

當然,如果調試配置里面直接指定了 ts,那么要能夠調試需要再配置 outFiles,告訴 vscode 去哪里找 sourcemap。

vscode中debugger怎么用

這樣,在 ts 源碼中打的斷點和在編譯出的 js 打的斷點都能生效。

多進程調試

當代碼中有子進程的時候,就有了第二條控制流,需要再啟動一個 debugger。

比如 vscode,它是基于 electron,需要啟動一個主進程,一些渲染進程。主進程是通過 launch 啟動的,而渲染進程則是后來 attach 的。

主進程啟動的時候,通過 --remote-debugging-port 來指定子進程自動的時候的 debugger server 的端口。

vscode中debugger怎么用

outFiles 來指定 sourcemap 的位置,這樣才可以直接調試 ts 源碼。runtimeExecutable 是用 vscode 的運行時替代掉了 nodejs(一般不需要設置)。

然后渲染進程是后面啟動的,我們通過參數配置了會啟動在 9222 端口,那么只要 attach 到那個端口就可以調試該進程了。

vscode中debugger怎么用

vscode 支持多 target 調試,也就是可以在 vscode 里面同時啟動 多個 debugger。可以切換不同的 debugger 來調試不同的進程。

vscode中debugger怎么用

彩蛋

debugger 只能打斷點么,不是的,它還可以這么用,加日志,不污染源碼。

vscode中debugger怎么用

vscode中debugger怎么用

vscode中debugger怎么用

vscode中debugger怎么用

總結

debugger 的使用是一項很重要的能力,對于 nodejs 水平的提升很有幫助。

nodejs debugger 的原理是 js 引擎會啟動 debugger server(websocket),等待客戶端連接,我們可以通過各種 debugger client 連上來進行調試,比如 chrome devtools、vscode debugger。

調試 nodejs 代碼更多還是使用 vscode debugger(當然有的時候也會使用 chrome devtools 調試,基于 chrome devtools 的 memory 來進行內存分析,定位內存泄漏問題的時候很有幫助)。

vscode debugger 的使用主要是在 .vscode/launch.json 里面添加調試配置。

調試配置分為 launch 和 attach 兩種:

  • launch 會啟動 debugger server 并用 debugger client 連接上

  • attach 只是啟動 debugger client 連接上已有的 debugger server,所以要指定端口

具體的配置項常用的有:

  • outFiles 指定 sourcemap 的位置,用來調試 ts 源碼等需要編譯的代碼

  • stopOnEntry 在首行停住

  • args 來指定一些命令行參數

  • runtimeExecutable 當運行時不是 nodejs 的時候需要指定,比如 vscode 或者其他的一些運行時

基于這些配置我們就可以調試各種場景下的 nodejs 代碼,需要編譯的,或者多個進程的。

不夸張地說,如果你熟悉了 debugger 的使用,理解各種 nodejs 代碼都會簡單很多。希望這篇文章能夠幫助大家了解 debugger 的原理,并且能夠使用 chrome devtools 或者 vscode debugger 來調試 nodejs 代碼。知道有 sourcemap 以及多進程的情況下都怎么調試。

關于“vscode中debugger怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

網頁題目:vscode中debugger怎么用
URL標題:http://vcdvsql.cn/article26/pocdcg.html

成都網站建設公司_創新互聯,為您提供品牌網站制作關鍵詞優化商城網站外貿網站建設微信小程序

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設