איך אפשר לדבג את הקוד של FxCop

20 בדצמבר 2008

2 תגובות


אז כמו שהבטחתי, בסוף הפוסט הקודם, הפוסט הנוכחי ידגים איך אפשר לדבג קוד של Code Analysis שאנחנו כותבים.


 אז, בדרך כלל כשאנחנו רוצים לדבג Visual Studio, אנחנו פותחים עוד Visual Studio, ועושים Attach to Process, (תחת תפריט Debug) ובחרים את ה Process שזה בדרך כלל, אותו Visual Studio שאנחנו רוצים לדבג, וברגע שיש Exception, אנחנו מקבלים חיווי ב Visual Studio השני.


אבל, מסתבר שב Code Analysis זה פשוט לא עובד, אני לא סגור על הסיבות, אבל זה המציאות, וצריך להתמודד עם זה, ולכן כדי שנוכל לדבג את הקוד, אנחנו צריכים לעשות את התהליך הבא:


דבר ראשון בתוך הקוד של ה Code Analysis שאנחנו כותבים, אנחנו צריכים להודיע ל debugger שאנחנו רוצים שכשהוא יגיע לשורה מסוימת, שיעצור שם ושלא ימשיך, נסתכל על הקוד הבא:


 


 




    1     public override ProblemCollection Check(Member member)


    2     {


    3         Debugger.Break();


    4 


    5         Method method = member as Method;


    6         if (method != null)


    7         {


    8             VisitMethod(method);


    9         }


   10 


   11         if (Problems.Count == 0)


   12         {


   13             return base.Check(member);


   14         }


   15 


   16         return Problems;


   17     }


 

שימו לב לשורה 3, אנחנו מודיעים ל debugger בצורה חד משמעית, כשאתה מגיע להריץ את השורה הזאת, תעצור ואל תמשיך,

בשלב שני, נקמפל את הקוד שלנו, ונזרוק את ה dll ל: C:\Program Files\Microsoft Visual Studio 9.0\Team Tools\Static Analysis Tools\FxCop\Rules

(מי שלא זוכר או לא יודע לכתוב חוקים עבור Code Analysis מוזמן לקרוא את הפוסט הקודם)

בשלב שלישי, תחת Tools->Options->Debugging->General, נוריד את הסימון מ Enable Just Ny Code.

 

DebugOptions

 

בשלב רביעי, תחת Debug->Exceptions, נסמן את Common Language Runtime Exceptions ב Thrown

 

Thrown

 

בשלב חמישי נפתח Visual Studio שני, שבו נמצא הקוד שאנחנו מריצים עליו את ה Code Analysis, ונריץ את Code Analisys,

(בשלב הזה אסור לעשות Attach ל Visual Studio שבו נמצא ה Code Analysis)

כשה Debugger יגיע להוראה שאומרת לו לעצור, אנחנו נקבל את המסך הבא:

FxCopDebug

 

 

במדה ונלחץ על Debug, נקבל את המסך הבא:

 

FxCopDebug2

 

 

אנחנו כמובן נבחר ב Instance של הקוד שלנו (זה שמסומן)

 

בדרך כלל נקבל את ההודעה הבאה:

 

NoSource

 

 

נוסיף BreakPoint לשורה, שאנחנו רוצים לעצור שם ונלחץ על F5, ואז נוכל לדבג.

 

תהנו.

ותודה לאלכס אבוגוב על העזרה.

 

RealDebug

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

כתיבת תגובה

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

2 תגובות

  1. Rotem Bloom21 בדצמבר 2008 ב 10:02

    אחלה פוסט.
    דבר דומה קורה כאשר כותבים SETUP PROJECT ב-VS
    לכן גם שם בקוד יש לעשות Debugger.Break();
    לא ממש ברור גם לי הקטע הזה, למה זה כל כך מסובך להבין איך לדבג את זה??!!!

    הגב
  2. Avi Pinto25 בדצמבר 2008 ב 7:47

    פוסט שימושי,
    חסכת לי כאב ראש עתידי
    תודה

    הגב