What is Reflector

24 בספטמבר 2010

תגיות: ,
תגובה אחת


 



מה זה ואיך משתמשים ב – Reflector


 

 

קבלתי שאלה במייל – "מה זה reflector?מה השימוש בו וכיצד"

 

כדי לענות על השאלה חשבתי לכתוב פוסט שידגים את השימוש בו.

 

לפני שנדבר על הכלי המופלא שנקרא ה – Reflector, צריך לוודא שאנחנו מבינים את תהליך העבודה ב – net.

 

 

 

Net process

 

 

(התמונה לקוחה מהמצגות של סלע.)

 


התהליך מתחיל כמובן בזה שאנחנו כותבים קוד באחת משפות NET.

 

ממשיך לקומפילצייה במידה והתהליך עבר בהצלחה אנו מקבלים קובץ exe/dll (תלוי בסוג הפרויקט).

 

מה שהקובץ באמת מכיל אינו קוד בינארי אלא קוד בשפה שמכונה intermediate language – IL.

 

בזמן ריצה נטען לזיכרון המחלקה הראשונה עם מתודת ה – Main, ה – JIT עולה לחיים ומקמפל לשפה בינארית את הקוד בצורה הכי מתאימה למעבד שמריץ את הקוד.

 

יש כל מיני סיבות לתהליך אבל לא פוסט זה המקום להסביר אותם – מה שמעניין אותנו הוא שאחרי הקומפילצייה יש לנו ביד קובץ בשפת IL שמכיל את הקוד שכתבנו (והוא יהיה זהה בלא קשר לשפה המקורית שבה הוא נכתב – כל עוד שמדובר כמובן בשפה .net)

 

היות שזו המציאות קם גאון אחד וכתב כלי נהדר שנקרא Reflector – הכלי הזה יודע לקחת קוד IL ולהמיר אותו בחזרה לקוד קריא – בצורה הזו אנו יכולים לקרוא את קוד המקור של כל הקוד שמייקרוסופט כתבו.

 

אפשר להוריד את הכלי מהלינק הבא.

 

אחרי ההפעלה תקבלו את המסך הבא

 

 

 

Reflector

 

 

נבחר את אחד מה – DLL של מיקרוסופט (תמיד עניין לראות איך הם מימשו את Console.WriteLine)

 

הכי קל כדי למצוא את המתודה יהיה ללחוץ על לחצן החיפוש ולכתוב את שם המחלקה

 

Reflector

 

לחיצה כפולה על שם המחלקה בתוצאות החיפוש תביא אותנו למחלקה ב – DLL המתאים.

 

נחפש את המתודה WriteLine ונלחץ על רווח – ונראה את המימוש של מייקרוסופט

 

Reflector

Reflector

 

 

 תוכלו להכנס יותא פנימה ולראות את המימוש של Out.WriteLine (שזה המימוש האמיתי – אבל תעשו את זה לבד)

 

שימו גם לב לקומבו למעלה שמאפשר לבחור מתוך רשימת שפות – באיזה שפה אנו רוצים לראות את המימוש.

 

 

כמובן שאפשר גם לייבא DLL אחרים כדי לראות אותם ולקרוא מה נכתב בהם.

 

השימוש בכלי יכול לתת לכם פרספקטיבה אחרת על הקוד שאתם כותבים והוא גם כלי דיבוג מעולה – למשל בפוסט הזה אני מתאר כיצד מצאתי את הבאג בעזרת ההבנה כיצד מומשה מתודה מסויימת.

 

 

אז שיהיה לכם בהצלחה – אחד מהדברים שאני נהנה לעשות הוא לשוטט עם ה – Reflector ולקרוא את המימוש של מייקרוסופט.

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

תגובה אחת

  1. רועי8 בינואר 2012 ב 11:23

    פנטסטי!

    הגב