ماژول Inspector در Node.js: دیباگ و پروفایلینگ با پروتکل DevTools

ماژول node:inspector در Node.js یک API برای تعامل با V8 Inspector فراهم می‌کند. این ماژول امکان اتصال به پروتکل Chrome DevTools را می‌دهد و توسعه‌دهندگان می‌توانند از آن برای دیباگ، پروفایلینگ CPU و حافظه، و جمع‌آوری رویدادهای شبکه استفاده کنند. Inspector هم نسخهٔ مبتنی بر Promise و هم نسخهٔ Callback دارد و ابزار قدرتمندی برای بررسی وضعیت اجرای برنامه است.

inspector.Session / connect / disconnect / postCPU Profiler / Heap Profilerinspector.open / inspector.url / inspector.waitForDebugger

~2 min read • Updated Dec 29, 2025

1. معرفی


ماژول inspector با دستور require('node:inspector') یا require('node:inspector/promises') در دسترس است. این ماژول امکان ارسال پیام به backend V8 Inspector و دریافت پاسخ‌ها و اعلان‌ها را فراهم می‌کند.


2. کلاس inspector.Session


  • new inspector.Session(): ایجاد نشست جدید.
  • session.connect(): اتصال به backend.
  • session.disconnect(): قطع اتصال و پاک‌سازی وضعیت.
  • session.post(method[, params]): ارسال پیام به backend برای اجرای دستورات مانند Runtime.evaluate.

3. رویدادها


  • inspectorNotification: اعلان عمومی از V8 Inspector.
  • رویدادهای خاص مانند Debugger.paused برای مدیریت breakpointها.

4. پروفایلینگ


  • CPU Profiler: فعال‌سازی با Profiler.enable و شروع با Profiler.start، سپس توقف و ذخیرهٔ پروفایل.
  • Heap Profiler: گرفتن snapshot حافظه با HeapProfiler.takeHeapSnapshot و ذخیرهٔ خروجی در فایل.

5. APIهای عمومی


  • inspector.open([port, host, wait]): فعال‌سازی inspector روی پورت و هاست مشخص.
  • inspector.url(): دریافت URL فعال inspector.
  • inspector.waitForDebugger(): توقف اجرای برنامه تا اتصال دیباگر.
  • inspector.close(): بستن تمام اتصال‌ها.

6. ادغام با DevTools


Inspector می‌تواند رویدادهای پروتکل DevTools مانند Network.requestWillBeSent یا Network.responseReceived را به frontendهای متصل ارسال کند. این قابلیت برای بررسی درخواست‌های HTTP و WebSocket مفید است.


7. مثال ساده


const inspector = require('node:inspector');
const session = new inspector.Session();
session.connect();

session.post('Runtime.evaluate', { expression: '2 + 2' }, 
             (err, { result }) => console.log(result));

نتیجه‌گیری


ماژول inspector در Node.js ابزاری قدرتمند برای دیباگ و پروفایلینگ است. با اتصال به پروتکل Chrome DevTools می‌توان اجرای برنامه را بررسی کرد، پروفایل CPU و حافظه گرفت، و رویدادهای شبکه را مدیریت نمود. این ماژول توسعه‌دهندگان را قادر می‌سازد کنترل دقیق بر چرخهٔ اجرای برنامه داشته باشند.


Written & researched by Dr. Shahin Siami