この記事では、トライアル モードの必要性を皆さんに紹介し、VSCode でデバッグ モードを有効にする 3 つの方法について説明します。
コード作成またはメンテナンス (
バグ
) のプロセスでは、単純な値や問題に対してを使用できます。 Console
を使用すると問題を解決できます。console
が良い方法であり、すべての問題を解決できる特効薬であると考える人もいます。私はそうではないと思います。コードの実行ロジックを明確にするために、複合型 (参照型) の値をチェックするオプションもありますが、デバッグ モード (debugger
) を使用する必要があります。 https://juejin.cn/post/7024890041948176398#Heading-1
debugger
はjs
のステートメントです。ここで実行します 1 行、プログラムがデバッグ モードの場合、ブレークポイントが存在します。つまり、この行で停止します。この時点で、最も重要な変数の値やコール スタックなどのコンテキストを確認できます。また、単一のステップバイステップデバッグ、またはブロックごとのデバッグもサポートしています。
通常のデバッグはブラウザで行うことが多く、ブラウザではコンソールを開くだけで済みます。デバッグ モードをオンにすると、##debugger
ステートメントまたはカスタム ブレークポイントが発生し、プログラムが停止し、
debugモードに入ります。
##この記事では、
vscodeプラグインを作成する予定なので、主にについて書きます。vscode
jsでデバッグ モードを有効にする方法について説明します (しばらくお待ちください) 、# vscode
のデバッグは避けられず、以前の単純なデバッグでは間違いなく私のニーズを満たさないため、vscode
.## のデバッグ モードについて学びましょう。 ## この記事ではデバッグ スキルについては書きませんが、
vscode
デバッグを有効にする方法
を使用できます。デバッグ モードがオンになります。コストは比較的大きくなります。こちらは vscode
console公式ドキュメント
デバッグ モードの必要性について再議論します
単純な値を確認するだけの場合は、
ブラウザでは、オブジェクトは参照型であり、ブラウザはオブジェクトを直接折りたたまないため、if
console
after オブジェクトを変更した後、コンソールに移動して確認します。変更されたオブジェクトが取得されます。
印刷後に自動的に折り畳まれません
手動で折りたたむと、ブラウザが値を再度読み取り、変更された値になります。
このような問題はオブジェクトが原因で発生するので、文字列に変換して出力すればこの問題は発生しませんが、見栄えは良くありません。場合によっては、デバッグ モードを使用する必要がある場合もあります。vscode でデバッグ モードを有効にする
vscode
,
tsvscode
で
node
##vscode
が提供する debug
ターミナルを直接使用します。
設定ファイルを使用します。3.3 を参照
合計 4 つのオプションがあり、オプションを切り替える方法は 3 つあります。
1.1 オプションを切り替える方法
#どの設定方法であっても変更する 設定方法がわかったら、vscode
を再起動すると効果が高まります
設定ファイルを開きます
settings.json
ファイルの後
// 修改或添加 { "debug.javascript.autoAttachFilter": "onlyWithFlag" }
Ctrl Shift P
を使用してコマンドを呼び出します (mac
またはショートカット キーを変更した場合は自分で見つけます)。
#1.2 各オプションの意味attach
と入力して見つけます。選択すると、これらの 4 つのオプションが表示され、オプションを再度選択して、必要なオプション
ではなくなり、disabled
常に デバッグ モードで開始します |
Intelligent( | smart
指定されたファイルのみが debug モードに入ります |
フラグを使用した場合のみ ( | onlyWithFlag
--inspect または | inspect-brk パラメーターを使用して、debug で開始します モード
無効( | 無効
#debug モード
| では開始しないでください
| # #Smart(smart)
モードを有効にするかどうかを指定するファイル パスです。 # 構成項目。デフォルト値はモードに入らず、開くことによってのみ入ることができます。次の方法で["${ workspaceFolder}/**「、」!**/node_modules/**「、」**/$KNOWN_TOOLS$/**"]
debug## です
disable(disabled)
モードで開始した場合、node --inspect
は
debugnodeターミナルを実行します。
モードでターミナルを直接起動し、debug
モード、おい~vscode
も詐欺です。いつデフォルト モードが ## に変更されたのかわかりません。 #disabledなので、
node --inspectを使用して
debugモードに入るのに失敗したことを覚えています。これは非常に奇妙でした。今、何が起こったのか理解しました。
2 JavaScript デバッグ ターミナル(デバッグ ターミナル)
debug
上記の方法 (
Auto Attach) により、すべての端末が
vscode で起動します。は制御されます。これは、それによって開始されたもののみを制御します。 Terminal.
#これがハイライトで、私がメインです これについてもっと知りたい
3 Launch Configuration
#3.1 起動構成のプロパティ##この構成ファイルは、現在のワークスペース ディレクトリ
の.vscode/launch.json にあります。手動で作成することも、
# を使用して簡単に作成することもできます。vscode
node#必須属性##必須属性。最も変更される属性は以上です
nameである必要があります。他の 2 つは
node
にあり、通常は変更されません。
属性値の例type
node => pwa-node | ,chrome => pwa-chrome | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
モードのリクエスト タイプには 2 つの値しかありません | launch | : start、attach :attach |
||||||||||||||||||||||||||||||||||
このスタートアップ コンフィギュレーションの名前は、ユーザーが | を区別するために使用します。カスタマイズ済み、自分で理解して、自分で使用するために
|
request
name
{ "version": "0.2.0", "configurations": [ { "name": "node调试", "port": 9229, "request": "attach", "skipFiles": ["<node_internals>/**"], "type": "pwa-node" }, { "type": "pwa-chrome", "request": "attach", "name": "chrome调试", "url": "http://localhost:8080", "webRoot": "${workspaceFolder}" } ] }
|
属性 | 含义 |
---|---|
outFiles | 指定Source maps 文件所在路径 |
resolveSourceMapLocations | 也是指定与Source maps 相关的路径 |
timeout | 附加的超时时间, 超时就放弃 |
stopOnEntry | 项目启动起来, 立即debugger 一下, 就是相当于在代码的第一行加了一个debugger
|
localRoot | 这个是用来远程调试用的, 我就先不了解它了... |
remoteRoot | 这个是用来远程调试用的, 我就先不了解它了... |
smartStep | 自动跳过没有映射到的源文件 |
skipFiles | 指定单步跳过的文件, 就是debugger 不跟进去看的源代码 |
trace | 开启会将一些调试输出保存到vscode 指定的文件中 |
(这个挺有用的, 有些代码不想跟进去看, 但是经常点快了, 就进去了..., 可以把这些文件排除掉,
<node_internals>/**/*.js</node_internals>
配置上这个, 可以跳过node
核心模块的代码.)
开启
trace
后
launch
支持的属性属性 | 含义 |
---|---|
program | 启动项目的入口文件地址(就是要执行的js 的路径) |
args | 相当于命令行参数(下面有详解) |
cwd | 指定程序启动的路径(下面有详解) |
runtimeExecutable | 指定可执行程序的启动路径(下面有详解) |
runtimeArgs | 给可执行程序的参数(下面有详解) |
env | 指定环境变量(下面有详解) |
"args": ["aaa", "bbb"]
:在命令行传递参数的方式, 在node
中可以通过process.argv
拿到
"cwd": "${workspaceFolder}/demo"
, 配置这个路径, 在node
中, 相当于指定了process.cwd()
的路径
这个可以指定启动的程序名, 比如使用
nodemon
启动, 或者指定路径, 比如你有3
个版本的node
想启动调试看看各个版本的差异, 就不需要切换全局的node
版本, 只需要设置多个配置项就行啦. 这样很方便的.
{ "version": "0.2.0", "configurations": [ { "name": "v10 版本启动", "program": "${workspaceFolder}/demo.js", "request": "launch", "type": "pwa-node", "runtimeExecutable": "C:\\Program Files\\nodejsv10\\node.js" // 这里是 v10 版本的node路径 }, { "name": "v11 版本启动", "program": "${workspaceFolder}/demo.js", "request": "launch", "type": "pwa-node", "runtimeExecutable": "C:\\Program Files\\nodejsv11\\node.js" // 这里是 v11 版本的node路径 }, { "name": "v12 版本启动", "program": "${workspaceFolder}/demo.js", "request": "launch", "type": "pwa-node", "runtimeExecutable": "C:\\Program Files\\nodejsv12\\node.js" // 这里是 v12 版本的node路径 } ] }
这个里面写的参数会紧跟在可执行程序后面, 在
node
程序中,node
会将它后面的第一个参数视为它要执行的文件的路径, 所以需要有所调整.
{ "version": "0.2.0", "configurations": [ { "name": "v10 版本启动", "program": "${workspaceFolder}/demo.js", // 这个现在已经不是 node 的执行文件地址了, 它只是一个参数了 "request": "launch", "type": "pwa-node", "args": ["args1", "args2"], "runtimeArgs": ["${workspaceFolder}/demo.js", "runtimeArgs2"] // 因为它紧跟在 可执行程序后面, 所以它的第一个参数需要设置为它要执行的文件的地址 // 如果它是 --experimental-modules 类型参数就没事了, 因为node会把它解析成参数, 这个参数的含义是 启动 es 模块支持. 接下来我会写一篇 js 的模块化的文章, 敬请期待哈 } ] } // 启动的命令行是 // C:\Program Files\nodejs\node.exe E:\font-end/demo.js runtimeArgs2 .\demo.js args1 args2
这个参数在弄成
npm
启动项目的时候, 比较有用
{ "version": "0.2.0", "configurations": [ { "name": "v10 版本启动", "program": "${workspaceFolder}/demo.js", "request": "launch", "type": "pwa-node", "env": { "NODE_ENV": "prod" } } ] }
attach
支持的属性我们常用的是
launch
方式启动, 就先不了解attach
的方式启动了.
对于如何在
vscode
中启动debug
模式, 应该是比较清楚的了
在
vscode
中, 一共有三种方式启动debug
调试, 分别是
自动附加(影响全局的终端), 如果对自己电脑性能有自信, 设置为always
. 命令行运行进入debug
模式.
强制开启(只影响这一个终端), 如果不方便配置开启全局的自动debug
, 使用这种方式进入debug
, 也是比较放便的, 就是重新开启这个debug
终端之后, 需要cd
到需要运行的js
文件目录, 比较麻烦. 命令行运行进入debug
模式.
配置开启(功能强大, 适合调试复杂应用),配置好.vscode/launch.json
后, f5
启动进入debug
模式
// 比较完整一个 launch.json 配置 { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "v10 版本启动", // 配置名称 "program": "${workspaceFolder}/demo.js", // 项目启动入口文件 "request": "launch", // `debug`模式的请求方式 "stopOnEntry": true, // 项目启动, 立即`debugger`一下 "type": "pwa-node", // 调试器类型 "env": { // 环境变量 "NODE_ENV": "prod" }, "args": ["aaaa"], // 启动命令时跟在 program 后的参数 "skipFiles": [ // 指定单步调试不进去的文件 "<node_internals>/**" // node 的核心库, 比如`require` ], "cwd": "${workspaceFolder}", // 指定可执行程序的启动路径, process.cwd(), "runtimeExecutable": "nodemon", // 指定可执行程序名称, 或者路径, 在这里 type 为 pwa-node 默认值是 node "runtimeArgs": ["--experimental-modules"] // 启动命令时, 跟在 runtimeExecutable 后的参数 } ] }
这里已经有三个坑了, 模块化
,调试技巧
, vscode插件开发
, 我目前更想先写一个vscode插件
,敬请期待.
感觉这篇文章能改到你启发的, 希望给个点赞, 评论, 收藏, 关注...
更多编程相关知识,请访问:编程视频!!
以上がVSCode でデバッグ モードを有効にするにはどうすればよいですか? 3 つの方法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。