Debian环境下调试JavaScript(JS)代码的常用方法
适用于调试运行在浏览器中的前端JavaScript代码(如Debian系统中的网页应用)。
操作步骤:
F12)打开开发者工具;F10)、Step Into(F11)等命令控制执行流程。适用于调试Node.js运行的服务端JavaScript代码(如Debian上的后端服务、CLI工具)。
基础命令:
node inspect your_script.js(your_script.js为入口文件),程序会在第一行暂停;sb(行号)(如sb(10)),在指定行设置断点;c(继续)、n(单步执行,不进入函数)、s(单步执行,进入函数)、repl(进入交互式命令行查看变量);repl后可输入变量名查看当前值,或输入bt查看调用堆栈。VS Code是Debian下常用的集成开发环境(IDE),提供直观的图形化调试界面,支持Node.js和浏览器JS调试。
配置步骤:
Ctrl+Shift+D);launch.json文件,指定入口文件路径(如"${workspaceFolder}/app.js"),并可选添加"skipFiles": ["<node_internals>/"](跳过Node.js内部文件);F5)启动调试;适用于需要更灵活、模块化日志输出的调试场景(如区分不同模块的调试信息)。
操作步骤:
npm install debug;const debug = require('debug')('myapp:module')(myapp:module为命名空间,用于区分不同模块);debug('调试信息', variable)(如debug('User logged in:', user.id));DEBUG环境变量,如DEBUG=myapp:module node app.js(仅显示myapp:module命名空间的日志),或DEBUG=* node app.js(显示所有命名空间的日志)。适用于需要持久化、分级存储日志的生产环境调试(如Debian服务器上的长期运行应用)。
以Winston为例的操作步骤:
npm install winston;logger.js文件,添加以下代码:const winston = require('winston');
const logger = winston.createLogger({
level: 'info', // 日志级别(info及以上会输出)
format: winston.format.json(), // 输出JSON格式
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }), // 错误日志单独存储
new winston.transports.File({ filename: 'combined.log' }), // 所有日志合并存储
],
});
module.exports = logger;
logger,如const logger = require('./logger'),然后使用logger.info('Application started')、logger.error('Database connection failed:', error)输出日志;tail -f error.log(实时查看错误日志)或cat combined.log(查看所有日志)命令查看日志文件。process.on('uncaughtException', (error) => {
console.error('Uncaught Exception:', error);
// 可选择记录日志或重启应用
});
process.on('unhandledRejection', (reason, promise) => {
console.error('Unhandled Rejection at:', promise, 'reason:', reason);
});
heapdump模块生成内存快照,分析内存使用情况:
npm install heapdump;require('heapdump').writeSnapshot('/tmp/heapdump.heapsnapshot')(或通过kill -USR2 <pid>命令触发);.heapsnapshot文件,查看内存占用情况。