תרגול 11 מלכודות בניית ה-Debugger

Slides:



Advertisements
מצגות קשורות
מגדל הסופגניות תבנית מבדק ידע לחנוכה מאת אורי אלון
Advertisements

הכרת תוכנת בקרים. כניסה לתוכנה תתבצע בשלבים הבאים: 1
אוגרים ומונים – Registers & Counters
אוגרים ומונים – Registers & Counters
© Keren Kalif JPA קרן כליף.
הרצאה 02 סוגי משתנים קרן כליף.
ניווט רובוט מסוג ROOMBA במרחב ממופה
מבנה מחשבים ספרתיים זיכרון מטמון - המשך
תרגול מס' 1: מנהלות חזרה על ארכיטקטורת ה- MIPS
לולאות Department of Computer Science-BGU 19 יולי 19.
תיבת הילוכים אוטומטית להנעה אחורית
OOO Execution of Memory Operations
Jump tables, review questions
מבצעים: רועי מור טל מסרי
מבוא למדעי המחשב הרצאה מספר 12: רקורסיה
תכנות בשפת C תרגול 11 רשימות מקושרות מבנים
פעולות אריתמטיות קרן כליף.
Computer Programming תרגול 1 Summer 2016
Present Perfect Simple
תירגול 11: מיונים וחיפוש בינארי
תוכנה 1 בשפת Java שיעור מספר 13: "אל תסתכל בקנקן"
Entity Relationship Diagram – ERD
סיכום - TCP TCP מבטיח העברה אמינה של המידע בסדר הנכון לרמת האפליקציה
Out Of Order Execution (Part 1)
חשבון זה הוא חלק ממוצרי 365 ומקושר לתיבת המייל
Lean דני חייט MSM.
OOO Execution of Memory Operations
תרגול 6: פונקציות, סוגי משתנים, top-down design
תהליך ההרשמה לבעלי אימייל של המכללה, ניתן להכנס לכתובת הבאה וליצור חשבון:
האויב של הטוב הוא הטוב ביותר
רובוטיקה תרגול שימוש בלולאות
איך מעלים סיקור בכמה שלבים?
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
Web Services Delegates and Events ליווי מקצועי : ארז קלר
Direction of induced current
מבוסס על שקפים מאת יאן ציטרין
זיכרון מטמון 2 מבנה מחשבים ספרתיים
תורת הקומפילציה תרגול 9: תרגום לקוד ביניים
יישומון הר לעמק 2019 הוראות הפעלה.
חניון עין-זיון הצבת לוח זיכרון לתיאור לחימת גדס"ר 134
מבוא לתכנות למערכות מידע
מבנה מחשבים ספרתיים זכרון וירטואלי מבוסס על תרגול של מורן גביש
Computer Architecture and System Programming Laboratory
Microsoft Learning Network Manager
Branch Prediction בעריכת אורן קצנגולד Updated by Franck Sala.
Branch Prediction Oren Katzengold, Franck Sala, Elad Shtiegmann.
תרגול 13 : חזרה נכתב על-ידי לימור ליבוביץ נערך ע"י ישראל גוטר
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
CLI vs GUI.
ברוך הבא למערכת גמל אינפו
Solving Simultaneous Linear Equations Using GPU
שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית
מבוא לתכנות ב- JAVA מעבדה 4
מבחני איתור לנבחרת ישראל הצעירה (מדעים ומתמטיקה) לתלמידי כיתות ז'
מבוא לתכנות בWINDOWS ד"ר אבי רוזנפלד.
מבנה כללי של היררכיית הקבצים עבור המסלול /A/B.txt
מבוא למדעי המחשב סמסטר ב' – 2008 מרצה: יעל סיגל מתרגל: ענבל בודובסקי.
Introduction to Programming in C
לבית: המשיכו וקראו עד סוף פרק א' נושא תנועה.
שבוע לאומי לגלישה בטוחה איגוד האינטרנט הישראלי
מבוסס על שקפים מאת יאן ציטרין
הצג את עצמך, את עמותת תפוח ואת נושא הפעילות.
Tutorial #10 MIPS commands
תרגול מס' 2: Data and Control Hazards
OOO Execution of Memory Operations
מבנה מחשבים ספרתיים תרגול מס' 4: זכרון מטמון 2.
עקרונות תכנות מונחה עצמים תרגול 9:C++ - תרגילים
Engineering Programming A
תמליל מצגת:

תרגול 11 מלכודות בניית ה-Debugger מבוסס על שקפים מאת יאן ציטרין

מלכודות במצבים מסוימים המעבד מפסיק את ריצת התוכנית הנוכחית ועובר לביצוע של שגרה מיוחדת שכתובתה נמצאת במקום שמור בזיכרון. דוגמאות: כתובת אי זוגית ב-PC (4,6) פקודה לא חוקית (10, 12) אירוע כזה נקרא מלכודת (פסיקת תוכנה). בניגוד לפסיקות רגילות שהן תוצאות של אירוע חיצוני, המקור של מלכודת – בתוכנית עצמה. © את"ם - תרגול מס' 12

תזכורת: מנגנון קפיצה וחזרה מפסיקה pc psw   + 2 וקטור הפסיקה המחסנית RTI המחסנית pc PC PSW psw © את"ם - תרגול מס' 12

בדיוק כמו וקטור הפסיקות יש הבדל קטן בין RTT ל-RTI מנגנון המלכודת בדיוק כמו וקטור הפסיקות קפיצה למלכודת וקטור מלכודת המחסנית  pc  + 2 psw RTT המחסנית pc יש הבדל קטן בין RTT ל-RTI הוא יובהר בהמשך PC PSW psw © את"ם - תרגול מס' 12

השוואה בין המלכודות לפסיקות "פסיקות תוכנה". פקודה או אירוע בתוך תוכנה אירוע נגרם ע"י התקן חיצוני במקרים מסוימים המתכנת בעצמו מכניס את פקודת המלכודת לתוכנה, ואז הוא יודע בדיוק מתי המלכודת תתרחש המתכנת אינו יודע מתי תתרחש הפסיקה המלכודת מתבצעת תמיד. אין מושג עדיפות חומרה ביצוע פסיקה מותנה בעדיפות חומרה גדולה מעדיפות תוכנה לא משתמשים במלות Status ו- Buffer המנגנון משתמש במלות Status ו- Buffer כתובת שיגרת שירות נמצאת בוקטור מלכודות כתובת שיגרת שירות נמצאת בוקטור פסיקות מנגנון הקפיצה והחזרה זהה לזה של הפסיקות מנגנון הקפיצה והחזרה: שמירה ושחזור של PC ו-PSW חזרה: RTT חזרה: RTI © את"ם - תרגול מס' 12

T-bit T N Z V C 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 דרך נוספת לגרום למלכודת היא להדליק את ה-T-bit במילת הסטטוס של המעבד (PSW) אחרי ביצוע של כל פקודה ה-CPU בודק את ה-T-bit אם הוא דלוק מתבצעת קפיצה למלכודת בכתובת (14, 16) המנגנון הזה מאפשר לממשtracing - ביצוע של איזושהי תוכנית, פקודה אחרי פקודה, כאשר בסיום ביצוע של כל פקודה השליטה חוזרת למשתמש © את"ם - תרגול מס' 12

ההבדל ביןRTI ל-RTT אחרי פקודת RTT לא מתבצעת בדיקת הT-bit - ניתן להשתמש בתכונה המיוחדת הזו לצורך בנייתdebugger פשוט (נקרא לו tracer) © את"ם - תרגול מס' 12

הרעיון של ה-tracer אתחול: כתובת התחלת התוכנית המדובגת ו-PSW עם ה-T-bit דלוק נמצאים בראש המחסנית ה-tracer נמצא בשגרת שירות של מלכודת (14, 16) אופן הפעולה: ה-tracer מבצע RTT. אחרי ביצוע RTT המעבד אינו מתייחס ל- T-bit. המעבד מבצע פקודה ראשונה של התוכנית המדובגת ובעקבות ה- T-bit מתבצעת קפיצה למלכודת (14, 16), כלומר ל-tracer. חזרה לשלב 1. © את"ם - תרגול מס' 12

הסכמה של ה-tracer push PSW (T-bit on) tracer push #main rtt PC=#main המחסנית HandleT PSW 14 וקטור המלכודת 16 “print r0” rtt HandleT: זוהי הפקודה הראשונה של התוכנית המדובגת mov … add … main: בעקבות הביצוע של rtt תתחיל להתבצע התוכנית המדובגת לאחר ביצוע של כל פקודה ב-main נכנסים למלכודת (14,16) © את"ם - תרגול מס' 12

מלכודתBPT והרחבת ה-tracer מה-debugger , למשל בדיקת ערכי הרגיסטרים או זיכרון בצורה אינטראקטיבית (ולא כמו קודם לאחר כל פקודה לבצע סדרה קבועה של פעולות) BPT – מלכודת, אשר הוקטור שלה נמצא ב-(14, 16), כלומר אותה שגרת שירות כמו ל-T-bit ניתן להשתמש ב-BPT על מנת להכניס breakpoints לתוכנית המדובגת וברגע שהתוכנית עוצרת ב-breakpoint שהגדרנו לאפשר למשתמש לבצע monitoring: לראות ערכים של הרגיסטרים להמשיך ריצה של התוכנית המדובגת ועוד © את"ם - תרגול מס' 12

טיפול ב-breakpoints א) השתלת ה-breakpoint בוחרים פקודה בתוכנית שלפניה רוצים לעצור, שומרים אותה במקום אחר בזיכרון, ובמקומה מכניסים את ה-opcode של BPT (ערך 000003) ב) עצירה ב-breakpoint מבצעים את התוכנית וברגע שנגיע לפקודת BPT (שהוחלפה לפני כן) נקפוץ לשגרת השירות של המלכודת (ממשק של ה- Debugger.) © את"ם - תרגול מס' 12

מלכודתBPT והרחבת ה-tracer mov #main, sp main: שלבים בתוכנית: הכנסת נקודת עצירה הגעה לנקודת העצירה החזרת השליטה למשתמש שחזור הפקודה ביצוע הפקודה החזרת נקודת העצירה המשך התוכנית. … … BPT BPT l1: mov r1, r3 … … halt save: © את"ם - תרגול מס' 12 mov r1, r3

תרשים הזרימה של ה-debugger ב-interface מחליפים את הפקודה המקורית ל-BPT (000003) מבצעים BPT ב-main ובעקבות כך נכנסים למלכודת משחזרים את הפקודה המקורית מעבירים שליטה למשתמש (שיוכל לבצע monitoring) מדליקים את ה- T-bit בתוך PSW שבמחסנית חוזרים לתוכנית הראשית מבצעים את הפקודה מקורית וחוזרים ל-debugger בגלל ה-T-bit מחליפים את הפקודה המקורית ב-BPT מכבים את T-bit (כדי לעצור רק לפני הפקודה ב-breakpoint) © את"ם - תרגול מס' 12

זוהי התוכנית "המדובגת“.שימו לב שהיא מסתיימת ב-RTS ולא ב-HALT debugger בדוגמה הזו התוכנית מתחילה להתבצע לא מ-main אלא מה-debugger debugger: mov pc, sp tst –(sp) mov #break_subr, @#14 ; Initialize trace clr @#16 ; and BPT vector jsr pc, interface jsr pc, main halt main: mov #7, r0 loop : sob r0, loop rts pc bAddr: .word loop ; the address of the original ; command save: .blkw 1 ; the original command is ; saved here נותנים למשתמש להגדיר פעולה של debugger (ההנחה הסמויה שהוא יכניס breakpoint לפני ה-loop זוהי התוכנית "המדובגת“.שימו לב שהיא מסתיימת ב-RTS ולא ב-HALT © את"ם - תרגול מס' 12

User Interface interface: waitP: tstb @#tps bpl waitP movb #’$, @#tpb waitR: tstb @#tks bpl waitR movb @#tkb, userInp checkR: cmpb userInp, #’r bne checkB movb r0, temp bic #177770, temp add #60, temp busy_w: tstb @#tks bpl busy_w movb temp, @#tpb br ret print the promt read the input into userInp prints the value of the r0 on the display © את"ם - תרגול מס' 12

User Interface (cont.) checkB: cmpb userInp, #’b ; inserts breakpoint to bAddr bne checkC mov @bAddr, save ; saves the original command mov #000003, @bAddr ; puts BPT instead of the br ret ; original command checkC: cmpb userInp, #’c ; continue bne interface ret: rts pc userInp: .blkw 1 temp: .blkw 1 © את"ם - תרגול מס' 12

שיגרת השירות של BPT BPT BPT T-bit מחזירים פקודה מקורית מקטינים כתובת חזרה מדליקים T-bit בתוך PSW במחסנית ממשק המשתמש מבצעים RTT מחזירים את ה-BPT מכבים את ה-T-bit בתוך PSW במחסנית מבצעים RTT © את"ם - תרגול מס' 12

שגרת שרות של המלכודת break_subr: bit #20, 2(sp) ; Is the T-bit set ? bne T_called BPT_called: mov save, @bAddr ; restore the original command sub #2, 0(sp) ; make the PC re-run the ; command on the breakpoint bis #20, 2(sp) ; T-bit on jsr pc, interface rtt T_called: mov #000003, @bAddr ; replace the original ; command with BPT bic #20, 2(sp) ; Clear the T-bit © את"ם - תרגול מס' 12