תגיות: ,
אין תגובות

כשצריך לדבג קוד שמים breakpoint ופשוט מריצים את התוכנית.

אם אנחנו רוצים לדבג קוד שרץ ב process אחר (למשל בתוכנית שכבר רצה על המחשב) אנחנו נכנסים לVisualStudio ומקשרים את הקוד שלנו לprocess הרצוי על ידי attach to process ומנסים להגיע לנקודה הרצוי ( קיצור דרך: ctrl + alt + p).

אבל יש מצבים שבהם אנחנו רוצים לדבג לא יעזור לנו בגלל שאנחנו רוצים לדבג תוכנית בזמן ההעלאה שלה. הדוגמא הנפוצה לזה היא windows service.

 

במקרה כזה אנחנו מוסיפים את השורה:

   1: Debugger.Launch();

 

עכשיו, כדי שיהיה נוח ולא נצטרך כל פעם להוסיף קוד ולקמפל ולהחליף DLL-ים ולמחוק בסוף וכו'… אפשר להוסיף מתודה קטנה וניתן לקינפוג באופן הבא:

נניח שהוספנו בStart  או ב Init של ה Service מתודה בשם LaunchDebugger והקוד שבתוכה יהיה כך:

   1: private void LaunchDebugger()

   2:  {

   3:      string stringValue = ConfigurationManager.AppSettings["LaunchDebuggerOnStartup"];

   4:      bool launchDebugger;

   5:      if (!String.IsNullOrWhiteSpace(stringValue) && bool.TryParse(stringValue, out launchDebugger) && launchDebugger)

   6:      {

   7:          this.RequestAdditionalTime(60*1000);

   8:          Debugger.Launch();

   9:      }

  10:  }

 

הפקודה RequestAdditionalTime אומרת לקוד לחכות עם ה TimeOut פרק זמן ארוך יותר מברירת המחדל.

בקובץ קונפיג נוסיף את השורה

   1: <add key="LaunchDebuggerOnStartup" value="True"/>

וכך על ידי שינוי קטן בקונפיגורציה נוכל להפעיל ולהשבית דיבוג על פי הצורך ללא קימפול מיותר.

הוסף תגובה " class="ir icon-in">linkedin twitter email