~2 min read • Updated Dec 30, 2025
1. معرفی
گزارشهای تشخیصی Node.js اطلاعاتی جامع دربارهٔ وضعیت پردازش در زمان وقوع خطا یا بهدرخواست توسعهدهنده ارائه میدهند. این گزارشها شامل جزئیات سیستمعامل، نسخهٔ Node.js، مصرف CPU و حافظه، و وضعیت event loop هستند.
2. نحوهٔ تولید گزارش
- با استفاده از فلگهای خط فرمان مانند
--report-uncaught-exceptionیا--report-on-fatalerror. - با ارسال سیگنال (پیشفرض SIGUSR2).
- بهصورت برنامهنویسی با
process.report.writeReport()یاprocess.report.getReport().
3. محتوای گزارش
- header: شامل نسخهٔ گزارش، زمان، PID، نسخهٔ Node.js، و اطلاعات سیستم.
- javascriptStack: پشتهٔ جاوااسکریپت هنگام وقوع خطا.
- nativeStack: پشتهٔ بومی (C++/V8).
- javascriptHeap: آمار حافظهٔ Heap و فضایهای مختلف V8.
- resourceUsage: مصرف CPU، حافظه، و خطاهای صفحه.
- libuv: وضعیت handleهای libuv مانند async، timer، tcp.
- environmentVariables: متغیرهای محیطی پردازش.
- userLimits: محدودیتهای سیستم برای کاربر.
- sharedObjects: کتابخانههای مشترک بارگذاریشده.
4. مثال ساده
try {
process.chdir('/non-existent-path');
} catch (err) {
process.report.writeReport(err);
}
5. نسخههای گزارش
- Version 5: تغییر واحدهای اندازهگیری حافظه به بایت.
- Version 4: افزودن کلیدهای ipv4 و ipv6 به endpointها.
- Version 3: افزودن کلیدهای مصرف حافظه به resourceUsage.
- Version 2: پشتیبانی از Worker Threads.
- Version 1: نسخهٔ اولیهٔ گزارش.
6. پیکربندی
ویژگیهای process.report امکان تنظیم رفتار گزارشدهی را فراهم میکنند:
reportOnFatalError: تولید گزارش هنگام خطاهای بحرانی.reportOnSignal: تولید گزارش هنگام دریافت سیگنال.reportOnUncaughtException: تولید گزارش هنگام خطاهای کشفنشده.signal: تعیین سیگنال برای تولید گزارش.filenameوdirectory: مسیر و نام فایل گزارش.excludeNetworkوexcludeEnv: حذف اطلاعات شبکه یا متغیرهای محیطی.
7. تعامل با Worker Threads
هر Worker میتواند گزارش تولید کند و گزارش اصلی شامل اطلاعات همهٔ Workerهای فرزند خواهد بود. این قابلیت برای برنامههای چندریسمانی حیاتی است.
نتیجهگیری
گزارشهای تشخیصی Node.js ابزاری قدرتمند برای تحلیل خطاها و مشکلات در محیطهای توسعه و تولید هستند. با ارائهٔ اطلاعات جامع دربارهٔ پشتهها، حافظه، منابع، و سیستمعامل، این گزارشها به توسعهدهندگان کمک میکنند تا مشکلات را سریعتر شناسایی و رفع کنند.
Written & researched by Dr. Shahin Siami