Debugger در Node.js: ابزار خطایابی خط فرمان

Node.js یک ابزار خطایابی ساده در خط فرمان ارائه می‌دهد که امکان توقف اجرای کد، بررسی متغیرها، و اجرای دستورات را فراهم می‌کند. این ابزار کامل‌ترین دیباگر نیست، اما برای بررسی سریع و گام‌به‌گام کد بسیار کاربردی است. همچنین می‌توان از ادغام با V8 Inspector و Chrome DevTools برای خطایابی پیشرفته‌تر استفاده کرد.

node inspectBreakpointsWatchersreplV8 Inspector

~2 دقیقه مطالعه · آخرین به‌روزرسانی ۶ دی ۱۴۰۴

1. شروع Debugger


برای استفاده از دیباگر، کافی است Node.js را با آرگومان inspect اجرا کنید:


$ node inspect myscript.js

دیباگر به‌طور پیش‌فرض روی اولین خط اجرایی متوقف می‌شود.


2. اجرای تا اولین Breakpoint


برای اجرای کد تا اولین دستور debugger، متغیر محیطی زیر را تنظیم کنید:


$ NODE_INSPECT_RESUME_ON_START=1 node inspect myscript.js

3. repl و اجرای دستورات


با دستور repl می‌توان کد را در همان محیط اجرا کرد:


debug> repl
> x
5
> 2 + 2
4

4. Watchers


برای مشاهدهٔ تغییرات متغیرها در هر breakpoint:


  • watch('expr'): افزودن عبارت به لیست Watch.
  • unwatch('expr'): حذف Watch.
  • watchers: نمایش همهٔ Watchها.

5. دستورات اصلی Debugger


  • cont: ادامهٔ اجرا.
  • next: اجرای خط بعدی.
  • step: ورود به تابع.
  • out: خروج از تابع.
  • pause: توقف اجرای کد.

6. Breakpoints


  • setBreakpoint(line): تعیین breakpoint روی خط مشخص.
  • setBreakpoint('script.js', 1): تعیین breakpoint روی فایل دیگر.
  • setBreakpoint('script.js', 1, 'num < 4'): تعیین breakpoint شرطی.
  • clearBreakpoint('script.js', 1): حذف breakpoint.

7. اطلاعات و پروفایلینگ


  • backtrace: نمایش مسیر اجرای فعلی.
  • list(5): نمایش ۵ خط قبل و بعد از موقعیت فعلی.
  • profile / profileEnd: شروع و پایان پروفایل CPU.
  • takeHeapSnapshot(): گرفتن snapshot از حافظه.

8. کنترل اجرا


  • run: اجرای اسکریپت.
  • restart: اجرای مجدد.
  • kill: توقف اجرای اسکریپت.

9. ادغام با V8 Inspector


با استفاده از Chrome DevTools می‌توان خطایابی پیشرفته انجام داد:


  • --inspect: اجرای کد و اتصال دیباگر.
  • --inspect-wait: انتظار برای اتصال دیباگر قبل از اجرای کد.
  • --inspect-brk: توقف روی اولین خط کد.

$ node --inspect index.js
Debugger listening on ws://127.0.0.1:9229/...

نتیجه‌گیری


ابزار Debugger در Node.js امکان خطایابی سریع و ساده را فراهم می‌کند. با ترکیب آن با V8 Inspector و Chrome DevTools می‌توان به خطایابی پیشرفته‌تر، بررسی حافظه و پروفایلینگ CPU دست یافت. این ابزارها توسعه‌دهندگان را قادر می‌سازند تا کدهای پایدارتر و قابل اعتمادتر تولید کنند.


نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

آشنایی کامل با ماژول Cluster در Node.js و نحوه افزایش مقیاس‌پذیری سرور

ماژول Cluster در Node.js به توسعه‌دهندگان اجازه می‌دهد چندین پردازش همزمان ایجاد کنند که یک پورت سرور را به اشتراک می‌گذارند. این کار باعث استفاده بهتر از هسته‌های CPU و افزایش توان پردازش برنامه می‌شود. در این مقاله نحوه کار Cluster، مدیریت Workerها، تنظیمات مهم و مثال عملی را بررسی می‌کنیم.

ادامه

راهنمای جامع ماژول VM در Node.js (ماژول node:vm)

ماژول node:vm امکان کامپایل و اجرای کد جاوااسکریپت در کانتکست‌های ایزولهٔ V8 را فراهم می‌کند. این کانتکست‌ها مانند یک «سندباکس سبک» داخل برنامهٔ Node.js عمل می‌کنند و هرکدام globalThis مخصوص خود را دارند. این ماژول برای اجرای پویا، موتورهای قالب (Template Engines)، سیستم‌های افزونه (Plugin Systems)، REPLها و تست ایزولهٔ منطق بسیار مناسب است. اما نکتهٔ بسیار مهم: vm یک ابزار امنیتی نیست و نباید برای اجرای کدهای غیرقابل‌اعتماد استفاده شود.

ادامه

راهنمای جامع ماژول V8 در Node.js (ماژول node:v8)

راهنمای جامع ماژول V8 در Node.js (ماژول node:v8)

ادامه

راهنمای جامع Worker Threads در Node.js (ماژول node:worker_threads)

ماژول node:worker_threads امکان اجرای واقعی چندریسمانی (Multithreading) را در Node.js فراهم می‌کند. برخلاف مدل تک‌ریسمانی سنتی Node.js، Worker Threads اجازه می‌دهند کارهای سنگین CPU در ریسه‌های جداگانه اجرا شوند بدون اینکه حلقهٔ رویداد (Event Loop) مسدود شود. این ماژول از حافظهٔ اشتراکی، انتقال بدون کپی (Zero‑Copy)، کانال‌های پیام، Worker Pool، محدودیت منابع و ابزارهای همگام‌سازی پیشرفته پشتیبانی می‌کند. Worker Threads برای پردازش‌های محاسباتی سنگین ایده‌آل هستند، در حالی که I/O همچنان باید توسط ریسهٔ اصلی مدیریت شود.

ادامه

راهنمای جامع ماژول util در Node.js

ماژول node:util مجموعه‌ای از توابع کمکی قدرتمند برای استفاده در هستهٔ Node.js و همچنین توسعهٔ برنامه‌ها ارائه می‌دهد. این ماژول ابزارهایی برای دیباگ، بازرسی اشیا، تبدیل Callback ↔ Promise، قالب‌بندی رشته‌ها، بررسی انواع، مدیریت خطاها، رمزگذاری متن، پردازش MIME، پارس آرگومان‌های CLI، سیگنال‌های Abort، و ابزارهای متفرقه فراهم می‌کند. این ماژول یکی از جعبه‌ابزارهای اصلی و ضروری برای توسعه‌دهندگان Node.js است.

ادامه

راهنمای جامع ماژول URL در Node.js

ماژول node:url ابزارهایی برای تحلیل، ساخت، و دست‌کاری URLها در Node.js فراهم می‌کند. Node.js دو API برای کار با URL دارد: WHATWG URL API — استاندارد مدرن و سازگار با مرورگرها (توصیه‌شده). Legacy API — API قدیمی Node.js (غیرتوصیه‌شده). WHATWG URL API یک رابط تمیز، سازگار و قدرتمند برای کار با اجزای URL، پارامترهای query، الگوهای URL و حتی Blob URLها ارائه می‌دهد.

ادامه