调试nodejs程序

Node.js调试技巧
1先来一段测试代码
var http  = require('http');

function onRequest(req,res){
var content = "hello, debug test";
var conLength = content.lenggth;
res.writeHead(200,{
'content-length': conLength,
'content-type': 'text/plain'
});
res.end(content);
}
http.createServer(onRequest).listen(8080);

保存为debug_server.js

2 debug用到的几个关键命令
■ cont —继续.
■ next —跳到下一条执行语句.
■ step —跳转入下一条语句中,否则的话跳过执行
■ out —从当前执行函数中跳出
■ backtrace —显示当前调用执行堆栈
■ repl —启动Nodejs REPL,可以查看变量值或执行代码
■ watch(expr) —将表达式加入监控列表
■ list( n ) —列出当前执行代码的前/后n行
3 调试
命令:node debug debug_server.js
输出:
< debugger listening on port 5858
connecting... ok
break in C:\Users\xxx\node\debug_server.js:1
1 var http = require('http');
2
3 function onRequest(req,res){
我们怀疑第5行有问题
debug> list(5)
1 var http = require('http');
2
3 function onRequest(req,res){
4 var content = "hello, debug test";
5 var conLength = content.lenggth;
6 res.writeHead(200,{
debug> setBreakpoint(5)
1 var http = require('http');
2
3 function onRequest(req,res){
4 var content = "hello, debug test";
* 5 var conLength = content.lenggth;
6 res.writeHead(200,{
在第5行设置断点,*表示断点所在位置
在另外一个命令窗口发出请求curl –i http://localhost:8080
你会发现两点:
(1)请求curl命令没有反应
(2)在node debug session下面输出:
break in C:\Users\xxx\node\debug_server.js:5
3 function onRequest(req,res){
4 var content = "hello, debug test";
* 5 var conLength = content.lenggth;
6 res.writeHead(200,{
7 'content-length': conLength,
我们跳过这一行
debug> next
break in C:\Users\xxx\node\debug_server.js:7
* 5 var conLength = content.lenggth;
6 res.writeHead(200,{
7 'content-length': conLength,
8 'content-type': 'text/plain'
9 });
现在启动node repl来查看当前变量的值
debug> repl
Press Ctrl + C to leave debug repl
> content
'hello, debug test'
> conLength
>
我们发现content的值跟预想的一样,但是conLength的值却没有,这就是问题所在了。
4 其他调试方式
当然了我们还可以在代码中插入类似console.log(变量名)的方法来打印变量的值进行调试
在 Visual Studio Code 中调试 Node.js 应用程序可以通过内置调试器和配置文件实现。以下是详细的步骤和说明: ### 创建调试配置 1. 打开你的 Node.js 项目文件夹。 2. 在左侧活动栏中,点击调试图标(或使用快捷键 `Ctrl+Shift+D`)。 3. 点击“创建 launch.json 文件”,如果项目中还没有该文件。 4. 选择环境为 `Node.js`,系统会自动生成一个基础的 `launch.json` 配置文件。 ### 常见调试配置示例 以下是几种常见的调试配置方式: #### 1. 启动并调试主文件(例如 `app.js`) ```json { "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Launch Program", "runtimeExecutable": "${workspaceFolder}/app.js", "restart": true, "console": "integratedTerminal", "internalConsoleOptions": "neverOpen" } ] } ``` #### 2. 调试附加到正在运行的 Node.js 进程 如果你已经运行了一个 Node.js 应用程序(例如通过 `node --inspect-brk -r ts-node/register app.ts` 启动),可以使用以下配置进行附加调试: ```json { "version": "0.2.0", "configurations": [ { "type": "node", "request": "attach", "name": "Attach to Process", "address": "localhost", "port": 9229, "restart": true, "console": "integratedTerminal", "internalConsoleOptions": "neverOpen" } ] } ``` #### 3. 使用 Auto Attach 自动附加调试 对于需要频繁重启的开发场景,可以启用 **Auto Attach** 功能,它会在 Node.js 进程启动时自动附加调试器。在 `launch.json` 中添加如下配置: ```json { "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Auto Attach", "runtimeExecutable": "nodemon", "runtimeArgs": ["--inspect=9229", "app.js"], "restart": true, "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "runtimeVersion": "14.0", "autoAttachChildProcesses": true } ] } ``` ### 调试操作 - 设置断点:在代码编辑器左侧点击行号旁边,设置断点。 - 单步执行:使用调试工具栏中的“步进”、“跳过”和“继续”按钮。 - 查看变量:在调试侧边栏中可以查看当前作用域内的变量。 - 性能分析:使用“性能”标签页查看函数调用耗时、内存使用等信息。 ### 注意事项 - 确保已安装最新版本的 Visual Studio Code 和 Node.js。 - 如果使用 TypeScript,需要在 `tsconfig.json` 中配置 `"sourceMap": true` 以便调试器可以映射到源代码[^3]。 - 使用 `nodemon` 可以实现自动重启,适用于开发阶段的调试流程[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值