[.NET] ตรวจสอบ ปัญหา Assembly Loading xxxxx ด้วย Tools Fuslogvw.exe

ฺช่วงนี้เป็นช่วยการเติมเต็ม Blog ครับ พอดีเป็นคนเอาไปแชร์ แต่ดันลืมดูว่าเนื้อหาแหว่งไปเยอะ 55 ผมเลยเอามา Re-Write ใหม่ในปี 2017 (ของเดิมปี 2015) เพราะ เขียนใหม่เกือบหมด 555 ตอนนั้นเหมือนมืนๆ ไป เข้าเนื้อหากันเลยดีกว่าครับ

Fusion Log (Fuslog) คือ อะไร

โปรแกรม Fuslog มันตัวช่วยของ .NET ในกรณีลองเอาระบบไป Deploy แล้ว พบว่าหาไฟล์ที่นำไปติดตั้ง (Assembly) มีปัญหาขึ้นตอนเวลาเรียกใช้งาน (Runtime)  อาทิเช่น ไฟล์หาย, ไฟล์อยู่ผิด Path หรือ เวอร์ชั่นของไฟล์ไม่ตรงกัน เป็นต้นครับ โดยตัวนี้มีมาให้อยู่แล้วกับตัว .Net ครับ

Fusion Log Viewer (Fuslogvw) คือ อะไร

โปรแกรม Fuslogvw ตามชื่อเลยครับ เป็นหน้าจอ GUI ที่ช่วยในการจัดการ และดูไฟล์ Log ได้ง่ายขึ้นจากเดิมครับ มันมาคู่กับตัว Windows SDK ปกติอยู่ที่ Path นี่ครับ

C:\Program Files (x86)\Microsoft SDKs\Windows\[[--SDK Version--]]\bin\[[--Optional NET Version--]]
  • [[--SDK Version--]] คือ ตัว Version ของ SDK ครับ
  • [[--Optional NET Version--]] คือ ระบุ Version ของตัว .Net ครับ เพิ่งมาเปลี่ยนโครงสร้างในตัว SDK เวอร์ชั่น v8.1A

ตัวอย่าง ผมลองยกตัวอย่าง และใช้ Path ที่ส่วนใหญ่เวลาลงแล้ว อยู่ที่ไหนของ แต่ละ OS ไว้ อาทิเช่น

Example for Win 7
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin
Example for Win 8 & Win 10 ++
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools

ถ้าอยากเอาไป Run แยก สามารถ Copy ไฟล์ ไปไว้ใน Folder เดียวกันครับ ได้แก่

  • fuslogvw.exe
  • flogvwrc.dll

Enable Fusion ให้เก็บ Log

สำหรับวิธีการบอกให้ Fusion มันเข้ามาเก็บ Log การทำงาน มี 4 วิธีครับ ได้แก่

  • Power Shell(พลังหอยยยย) โดย Run คำสั่ง ดังนี้
    PS C:\Users\Adminping> new-itemproperty -path HKLM:\SOFTWARE\Microsoft\Fusion -n EnableLog -t Dword -va 1
  • Command Prompt โดย Run คำสั่ง ดังนี้
    C:\Users\Adminping>reg add HKLM\Software\Microsoft\Fusion /v EnableLog /t REG_DWORD /d 1
  • เขียน Regeitry File(.reg) ยัดมันตรงๆ Copy ลง Notepad และ Save เป็น .reg (หมายเหตุ ถ้าไป Search มี Config ต่างๆ อีก 2 - 3 ตัว เอาที่จำเป็นดีกว่าครับ
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
    "ForceLog"=dword:00000001
    "LogPath"="C:\\fuslog\\"
  • GUI - ใช้ตัว Fuslogvw มาเปิดครับ และ Config ผ่านเมนู Setting ครับ

ทำไปแล้ว มันไปอยู่ใน Registry ดังนี้ครับ

มาส่องดู Log ที่บันทึกกัล

หลังจากเปิดให้ระบบมันเก็ย Log แล้วมาดูผลงานมันหน่อยดีกว่า ถ้าเข้าไปดู Path ที่เก็บ Log ในที่นี้กำหนดเป็น C:\fuslog\ หลังจากปล่อยให้มันทำงานสักพักพบว่ามีไฟล์เยอะมากครับ ไปใช้ตัว Fuslogvw เข้ามาช่วยส่องครับ โดยดูตาม

  • Application(หมายเลข 1) - ชื่อ Appcation ที่ทำงานครับ ในกรณีนี้ผมกำลังดูการทำงานของ AddIns บน Excel มันเลยแสดง Application เป็น Excel ถ้าเราทำ WinApp ตัวอื่น เช่น CarRent.exe ตัวโปรแกรมแสดงชื่อ CarRent.exe
  • Description(หมายเลข 2) - แสดงข้อมูลรายละเอียดของ DLL ที่ถูกเรียกใช้งานครับ
  • Date/Time(หมายเลข 3) - เวลาที่บันทึก

เมื่อเจอรายการที่สนใจ Double Click เข้าไปครับ มันจะไปเรียกไฟล์ที่ลงรายละเอียดเข้ามาครับ อย่างในรูปเป็น Log บันทึกว่าสามารถทำงานได้ตามปกติครับ

NOTE: หลังจากตรวจสอบเสร็จ ต้องปิดการทำงานของ Fusion Log  ด้วยนะครับ ไม่งั้น Harddisk เต็มครับ

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.