[.NET] มา Debug ตัว NuGet Package กันครับ

หลังจากบทความก่อนหน้าที่ได้สอนว่าทำอย่างไรถึงได้ NuGet Package มาใช้งานกันเอง หรือ ใช้ภายในองค์กรแล้วครับ คราวนี้ผมมาสอนว่าถ้ามันเกิดปัญหาจริงๆ แล้วเราจะต้องเข้ามา Debug ตัว NuGet Package ที่ใช้ต้องทำอย่างไรบ้างครับ

ทำไมต้อง Debug ตัว NuGet Package

  • เพราะ Bug อาจจะเกิดจาก Nuget Package เอง
  • เพราะต้องการศึกษาการทำงานของ Library เอามาใช้ Project ในรูปแบบ Nuget Package

มารู้จักกันก่อนว่า NuGet Package แบบไหนถึงจะ Debug ได้

ถ้าเป็น Open Source บ้างเจ้าเค้าจะทำ Symbol ไว้ให้ รายละเอียดขึ้นกับแต่ละ Repo เลยครับ ถ้าไม่มีต้องมา Build และเพิ่ม Symbol สำหรับ Debug

  • ต้องมีไฟล์ Source Code ของ NuGet Package ที่สนใจ
  • เจ้าไฟล์ Symbol และ Source Code ถ้าจะเอาสะดวก เวลาเราทำเองให้มัน Public เข้าไปพร้อมกับตัว NuGet Package เลยครับ
  • มันจะยากในกรณีที่เป็นพวก Open Source หรือ ตัว NuGet ได้มาจาก NuGet Server อันนี้ต้องหาไฟล์ Symbol จาก Symbol Server และเอา Code จาก GitHub / cvs.sourceforge หรือจากแหล่งอื่นๆ มาใช้ เพื่อการ Debug ครับ

ทำให้ Visual Studio สามารถ Debug Code จาก NuGet Package ได้

Note: ตัวอย่างนี้ผมเสนอการ Debug NuGet Package ที่สร้างเองใช้ภายในองค์กรนะครับ แต่สามารถไปประยุกต์ใช้กับ NuGet Package จาก nuget.org ได้ เช่นกันครับ

  • เปิด Visual Studio เข้ามาเมนู Tool > Options > Debugging ในส่วน General ให้ติ๊กตามรูป
  • กำหนดที่อยู่ของ Symbol Cache เอาไว้ใช้เป็น Temp ตอนอ้างอิงระหว่าง Debug
  • จากกรอปเส้นปะสีม่วงตรงจุดนี้สามารถเลือกได้ว่าเป็น Specific Modules หรือ Load All Modules โดยแบบหลังตอน Build และ Run มันช้ากว่าครับ
  • ทดสอบ Run Code และเข้าเมนู DEBUG > Windows > Modules เพื่อเปิดหน้าจอ Modules เป็นหน้าที่ที่เอาไว้จัดการ DLL ตอน Runtime
  • ที่หน้าจอ Module ถ้าสนใจ DLL ของ NuGet Package ในองค์กรอันไหนให้คลิกขวาเลือก Always Load Automatically
  • ทดสอบ Run Code และกำหนด Breakpoint ตรงจุดที่สนใจ เพื่อ Debug Code ของ NuGet Package
  • เมื่อมาถึงจุดที่ Breakpoint เมื่อกด F11 ไว้ตัว Visual Studio ให้ไปหา Code C:\Users\<<ชื่อ User>>\.nuget\packages\<<ชื่อ NuGet>>\<<เลขเวอร์ชัน>>\src
  • ตอนนี้เข้ามา Debug Code ของ NuGet ได้เรียบร้อย

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.