משתמשים בבודק הזיכרון כדי לבדוק זיכרון של ArrayBuffer
, TypedArray
ו-DataView
ב-JavaScript, וגם WebAssembly.Memory
של אפליקציות Wasm שנכתבו ב-C++.
סקירה כללית
בודק הזיכרון מארגן את תוכן הזיכרון ועוזר לנווט במערכים גדולים במהירות. ניתן להציג את ערכי ה-ASCII של תוכן הזיכרון ישירות ליד הבייטים ולבחור הגדרת אנדיזציה אחרת. כדי לייעל את תהליך העבודה, כדאי להשתמש בבודק הזיכרון בזמן ניפוי באגים באפליקציית האינטרנט.
פתיחת הכלי לבדיקת זיכרון
יש כמה דרכים לפתוח את בודק הזיכרון.
פתיחה מהתפריט
- פותחים את כלי הפיתוח.
- לוחצים על אפשרויות נוספות > כלים נוספים > בודק הזיכרון.
פתיחה במהלך ניפוי באגים
- פותחים דף עם JavaScript
ArrayBuffer
. אנחנו נשתמש בדף ההדגמה הזה. - פותחים את כלי הפיתוח.
- פותחים את הקובץ demo-js.js בחלונית מקורות ומגדירים נקודת עצירה בשורה 18.
- יש לרענן את הדף.
- מרחיבים את הקטע היקף בחלונית כלי לניפוי באגים שמשמאל.
אפשר לפתוח את בודק הזיכרון:
- מהסמל. לוחצים על הסמל שלצד הנכס
buffer
, או - מתפריט ההקשר. לוחצים לחיצה ימנית על המאפיין
buffer
ובוחרים באפשרות הצגה בחלונית בודק הזיכרון.
- מהסמל. לוחצים על הסמל שלצד הנכס
בדיקה של מספר אובייקטים
- אפשר גם לבדוק את DataView או TypedArray. לדוגמה,
b2
הואTypedArray
. כדי לבדוק זאת, לוחצים לחיצה ימנית על המאפייןb2
ובוחרים באפשרות הצגה בחלונית בודק הזיכרון (עדיין אין סמל עבורTypedArray
אוDataView
). - תיפתח כרטיסייה חדשה בבודק הזיכרון. שימו לב שניתן לבדוק מספר אובייקטים בבת אחת.
בודק הזיכרון
בודק הזיכרון כולל 3 אזורים עיקריים:
סרגל הניווט
- בaddress input מוצגת כתובת הביתט הנוכחית בפורמט הקסדצימלי. אתם יכולים להזין ערך חדש כדי לעבור למיקום חדש במאגר הנתונים הזמני. לדוגמה, אפשר לנסות להקליד
0x00000008
. - השימוש במאגרי נתונים זמניים יכול להיות ארוך יותר מהדף. במקום לגלול בדף, אתם יכולים להשתמש בלחצן שמאלה וימינה כדי לנווט.
- הלחצנים מימין מאפשרים ניווט קדימה/אחורה.
- כברירת מחדל, מאגר הנתונים הזמני מתעדכן באופן אוטומטי במהלך הצעד. אם זה לא המצב, אפשר ללחוץ על הלחצן רענן כדי לרענן את הזיכרון ולעדכן את התוכן שלו.
מאגר נתונים זמני של זיכרון
- בצד ימין, הכתובת מוצגת בפורמט הקסדצימלי.
- גם הזיכרון מוצג בפורמט הקסדצימלי, כשכל בייט מופרד ברווח. הבייט שנבחר מודגש. אפשר ללחוץ על הבייט או לנווט באמצעות המקלדת (שמאלה, ימינה, למעלה, למטה).
- ייצוג ASCII של הזיכרון מופיע בצד שמאל. הדגשה מציגה את הערך המתאים לביטים שנבחרו בבייט. כמו בזיכרון, אפשר ללחוץ על הבייט או לנווט באמצעות המקלדת (שמאלה, ימינה, למעלה, למטה).
הכלי לבדיקת ערך
- בסרגל הכלים העליון יש לחצן למעבר בין קצה גדול לקטן ולפתיחת ההגדרות. פותחים את ההגדרות כדי לבחור את סוגי הערכים שרוצים שיוצגו כברירת מחדל בבודק.
- באזור הראשי מוצגים כל פירושי הערכים לפי ההגדרות. כברירת מחדל, כולם מוצגים.
- אפשר ללחוץ על הקידוד. אפשר לעבור בין dec, hex, oct למספר שלם ו-sci ו-dec למספר צפים.
הזיכרון בבדיקה
בואו נבדוק את הזיכרון ביחד.
- יש לבצע את השלבים הבאים כדי להתחיל את ניפוי הבאגים.
- משנים את הכתובת ל-
0x00000027
בקלט הכתובת. - חשוב להקפיד על ייצוג ASCII ועל פירושי הערכים. כל הערכים ריקים כרגע.
- שימו לב ללחצן מעבר לכתובת הכחול שלצד
Pointer 32-bit
ו-Pointer 64-bit
. אפשר ללחוץ עליה כדי לעבור לכתובת. הלחצנים מופיעים באפור ולא ניתן ללחוץ עליהם אם הכתובות לא חוקיות. - לוחצים על המשך הפעלת הסקריפט כדי לבצע פעולות בקוד.
- שימו לב שייצוג ה-ASCII עודכן. כל הפרשנויות של הערכים מתעדכנות גם הן.
- נתאים אישית את הכלי לבדיקת ערכים כך שיוצג רק נקודה צפה. לוחצים על הלחצן הגדרות ומסמנים רק את הקטעים Float 32-bit ו-Float 64-bit.
- בואו נשנה את הקידוד מ-
dec
ל-sci
. שימו לב שייצוגי הערכים מתעדכנים בהתאם. - נסו לנווט במאגר הנתונים הזמני באמצעות המקלדת או באמצעות סרגל הניווט. חוזרים על שלב 4 כדי לראות את השינויים בערכים.
בדיקת זיכרון של WebAssembly
האובייקט WebAssembly.Memory
הוא ArrayBuffer
שמאחסן את הבייטים הגולמיים של זיכרון האובייקט. החלונית בודק הזיכרון מאפשרת לבדוק אובייקטים כאלה באפליקציות Wasm שנכתבו ב-C++.
כדי לנצל את מלוא הפוטנציאל של הבדיקה של WebAssembly.Memory
:
- צריך להשתמש ב-Chrome מגרסה 107 ואילך. כדאי לבדוק את הגרסה בכתובת
chrome://version/
. - מתקינים את התוסף C/C++ DevTools Support (DWARF). זהו פלאגין לניפוי באגים באפליקציות C/C++ WebAssembly באמצעות מידע על ניפוי באגים של DWARF.
כדי לבדוק את WebAssembly.Memory
של אובייקט:
- פותחים את כלי הפיתוח בדף ההדגמה הזה.
- בחלונית מקורות, פותחים את
demo-cpp.cc
ומגדירים נקודת עצירה בפונקציהmain()
בשורה 15:x[i] = n - i - 1;
. - צריך לטעון מחדש את הדף כדי להריץ את האפליקציה. הכלי לניפוי באגים מושהה בנקודת העצירה (breakpoint).
- בחלונית כלי לניפוי באגים, מרחיבים את היקף > מקומי.
לוחצים על הסמל ליד המערך
x: int[10]
.לחלופין, לוחצים לחיצה ימנית על המערך ובוחרים באפשרות הצגה בחלונית בודק הזיכרון.
כדי להפסיק את ההדגשה של זיכרון האובייקט, בחלונית בודק הזיכרון מעבירים את העכבר מעל תג האובייקט ולוחצים על הלחצן x
.
מידע נוסף זמין במאמרים הבאים: