DCSIMG
איך אפשר לדבג את הקוד של FxCop - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

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

אז כמו שהבטחתי, בסוף הפוסט הקודם, הפוסט הנוכחי ידגים איך אפשר לדבג קוד של 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

תוכן התגובה

Rotem Bloom כתב/ה:

אחלה פוסט.

דבר דומה קורה כאשר כותבים SETUP PROJECT ב-VS

לכן גם שם בקוד יש לעשות Debugger.Break();

לא ממש ברור גם לי הקטע הזה, למה זה כל כך מסובך להבין איך לדבג את זה??!!!

# December 21, 2008 10:02 AM

Avi Pinto כתב/ה:

פוסט שימושי,

חסכת לי כאב ראש עתידי

תודה

# December 25, 2008 7:47 AM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 4 and 6 and type the answer here:


Enter the numbers above: