از بازرس حافظه برای بازرسی حافظه ArrayBuffer
، TypedArray
و DataView
در جاوا اسکریپت و همچنین WebAssembly.Memory
برنامه های Wasm که در C++ نوشته شده اند استفاده کنید.
نمای کلی
بازرس حافظه محتوای حافظه را سازماندهی میکند و به شما کمک میکند تا آرایههای بزرگ را به سرعت حرکت کنید. می توانید مقادیر ASCII محتوای حافظه را مستقیماً در کنار بایت ها مشاهده کنید و endianness های مختلف را انتخاب کنید. هنگام اشکال زدایی برنامه وب خود برای گردش کار کارآمد، از بازرس حافظه استفاده کنید.
Memory Inspector را باز کنید
چند راه برای باز کردن بازرس حافظه وجود دارد.
از منو باز کنید
- DevTools را باز کنید .
- روی گزینه های بیشتر کلیک کنید > ابزارهای بیشتر > بازرس حافظه .
در هنگام اشکال زدایی باز شود
- صفحه ای را با JavaScript
ArrayBuffer
باز کنید. ما از این صفحه نمایشی استفاده خواهیم کرد. - DevTools را باز کنید .
- فایل demo-js.js را در پنل Sources باز کنید، یک نقطه شکست را در خط 18 تنظیم کنید.
- صفحه را رفرش کنید.
- بخش Scope را در صفحه Debugger سمت راست باز کنید.
می توانید بازرس حافظه را باز کنید:
- از نماد . با کلیک بر روی نماد کنار خاصیت
buffer
یا - از منوی زمینه بر روی ویژگی
buffer
کلیک راست کرده و Reveal in Memory Inspector panel را انتخاب کنید.
- از نماد . با کلیک بر روی نماد کنار خاصیت
چندین اشیاء را بررسی کنید
- می توانید DataView یا TypedArray را نیز بررسی کنید. به عنوان مثال،
b2
یکTypedArray
است. برای بررسی آن، روی ویژگیb2
کلیک راست کرده و Reveal را در پنل Memory Inspector انتخاب کنید (هنوز نمادی برایTypedArray
یاDataView
وجود ندارد). - یک برگه جدید در بازرس حافظه باز می شود. لطفاً توجه داشته باشید که می توانید چندین شی را به طور همزمان بررسی کنید.
بازرس حافظه
بازرس حافظه از 3 حوزه اصلی تشکیل شده است:
نوار ناوبری
- ورودی آدرس آدرس بایت فعلی را در قالب هگز نشان می دهد. می توانید مقدار جدیدی را برای پرش به یک مکان جدید در بافر حافظه وارد کنید. برای مثال،
0x00000008
را تایپ کنید. - بافرهای حافظه ممکن است طولانی تر از یک صفحه باشند. به جای پیمایش، می توانید از دکمه چپ و راست برای پیمایش استفاده کنید.
- دکمههای سمت چپ امکان پیمایش رو به جلو/عقب را میدهند.
- بهطور پیشفرض، بافر بهطور خودکار در مرحله استپ بهروزرسانی میشود. در صورتی که اینطور نیست، دکمه refresh به شما این امکان را می دهد که حافظه را تازه کنید و محتویات آن را به روز کنید.
بافر حافظه
- از سمت چپ، آدرس با فرمت هگز نمایش داده می شود.
- حافظه نیز در فرمت هگز نشان داده می شود که هر بایت با یک فاصله از هم جدا شده است. بایت انتخاب شده در حال حاضر برجسته شده است. می توانید روی بایت کلیک کنید یا با صفحه کلید (چپ، راست، بالا، پایین) حرکت کنید.
- یک نمایش ASCII از حافظه در سمت راست نشان داده شده است. هایلایت مقدار مربوط به بیت های انتخاب شده روی بایت را نشان می دهد. مشابه حافظه، می توانید روی بایت کلیک کنید یا با صفحه کلید (چپ، راست، بالا، پایین) حرکت کنید.
بازرس ارزش
- نوار ابزار بالایی دارای دکمه ای برای جابجایی بین بزرگ و ک��چک و باز کردن تنظیمات است. تنظیمات را باز کنید تا انتخاب کنید کدام نوع مقادیر را میخواهند بهصورت پیشفرض در بازرس ببینند.
- ناحیه اصلی تمام تفاسیر مقادیر را طبق تنظیمات نشان می دهد. به طور پیش فرض، همه نشان داده می شوند.
- رمزگذاری قابل کلیک است. شما می توانید بین dec، hex، oct برای عدد صحیح و sci، dec برای شناور تغییر دهید.
بررسی حافظه
بیایید با هم حافظه را بررسی کنیم.
- برای شروع اشکال زدایی این مراحل را دنبال کنید.
- آدرس را در ورودی آدرس به
0x00000027
تغییر دهید. - نمایش ASCII و تفاسیر ارزش را مشاهده کنید. همه مقادیر در حال حاضر خالی هستند.
- به دکمه آبی پرش به آدرس کنار
Pointer 32-bit
وPointer 64-bit
توجه کنید. برای رفتن به آدرس می توانید روی آن کلیک کنید. اگر آدرس ها معتبر نباشند، دکمه ها خاکستری هستند و قابل کلیک نیستند. - روی Resume script execution کلیک کنید تا وارد کد شوید.
- توجه داشته باشید که نمایش ASCII اکنون به روز شده است. تمام تفاسیر ارزش نیز به روز می شوند.
- بیایید بازرس ارزش را سفارشی کنیم تا فقط ممیز شناور را نشان دهد. روی دکمه تنظیمات کلیک کنید و فقط Float 32-bit و Float 64-bit را علامت بزنید.
- بیایید رمزگذاری را از
dec
بهsci
تغییر دهیم. توجه داشته باشید که نمایش های ارزش بر این اساس به روز می شوند. - سعی کنید با صفحه کلید خود یا با استفاده از نوار پیمایش در بافر حافظه حرکت کنید. برای مشاهده تغییرات مقادیر، مرحله 4 را تکرار کنید.
بازرسی حافظه WebAssembly
شی WebAssembly.Memory
یک ArrayBuffer
است که بایت های خام حافظه شی را نگه می دارد. پانل Memory Inspector به شما امکان می دهد چنین اشیایی را در برنامه های Wasm که به زبان C++ نوشته شده اند را بررسی کنید.
برای استفاده کامل از WebAssembly.Memory
بازرسی:
- از Chrome 107 یا جدیدتر استفاده کنید. نسخه خود را در
chrome://version/
بررسی کنید. - پسوند C/C++ DevTools Support (DWARF) را نصب کنید. این افزونه ای برای اشکال زدایی برنامه های C/C++ WebAssembly با استفاده از اطلاعات اشکال زدایی DWARF است.
برای بررسی WebAssembly.Memory
یک شی:
- DevTools را در این صفحه نمایشی باز کنید.
- در پنل Sources ،
demo-cpp.cc
را باز کنید و یک نقطه شکست در تابعmain()
در خط 15 تنظیم کنید:x[i] = n - i - 1;
. - برای اجرای برنامه، صفحه را دوباره بارگیری کنید. دیباگر در نقطه شکست مکث می کند.
- در بخش Debugger ، Scope > Local را گسترش دهید.
را کلیک کنید نماد کنار آرایه
x: int[10]
.یا، روی آرایه کلیک راست کرده و Reveal in Memory Inspector panel را انتخاب کنید.
برای توقف برجسته کردن حافظه شی، در پانل Memory Inspector ، نشانگر شی را نگه دارید و روی دکمه x
کلیک کنید.
برای کسب اطلاعات بیشتر، نگاه کنید به: