.net - معطلة - حل مشكلة usb debugging



كيفية معرفة ما إذا كان قد تم تصنيف تطبيق.NET في وضع التصحيح أو RELEASE؟ (4)

جواب ZombieSheep غير صحيح.

جوابي على هذا السؤال المكرر هو هنا: كيفية معرفة ما إذا كان قد تم تصنيف تطبيق .NET في وضع التصحيح أم الإصدار؟

كن حذرا للغاية - مجرد النظر إلى "سمات التجميع" في بيان الجمعية من أجل وجود خاصية "التصحيح" لا يعني أن لديك تجميعًا غير JIT محسّنًا. يمكن أن يكون التجميع JIT محسناً ولكن مع إعداد "مخرجات التجميع" تحت "إنشاء متقدم" لتضمين معلومات "كاملة" أو "pdb-only" - وفي هذه الحالة ، ستكون الخاصية "Debuggable" موجودة.

الرجاء الرجوع إلى مشاركاتي أدناه لمزيد من المعلومات: كيفية معرفة ما إذا كان التجميع هو Debug أو Release و كيفية تحديد ما إذا كان DLL هو Debug أو Release build (في .NET)

لا يعمل تطبيق Jeff Key بشكل صحيح ، لأنه يعرّف بنية "Debug" استنادًا إلى ما إذا كان DebuggableAttribute موجودًا. DebuggableAttribute موجود إذا قمت ترجمة في وضع الإصدار واختر DebugOutput إلى أي شيء آخر غير "بلا".

تحتاج أيضا إلى تعريف exaclty ما هو المقصود من "Debug" مقابل "الإصدار" ...

  • هل تقصد أنه تم تكوين التطبيق مع تحسين التعليمات البرمجية؟
  • هل يعني أنه يمكنك إرفاق المصحح Visual Studio / JIT إليه؟
  • هل تقصد أنه يولد DebugOutput؟
  • هل تقصد أنه يحدد ثابت DEBUG؟ تذكر أنه يمكنك ترجمة الطرق بطريقة شرطية مع سمة System.Diagnostics.Conditional() .

https://ffff65535.com

لدي تطبيق مثبت على جهاز الكمبيوتر الخاص بي. كيف يمكنني معرفة ما إذا كان قد تم تجميعها في وضع DEBUG أم لا؟

لقد حاولت استخدام .NET Reflector ، لكنه لا يظهر أي شيء محدد. هذا ما أراه:

// Assembly APPLICATION_NAME, Version 8.0.0.15072
Location: C:\APPLICATION_FOLDER\APPLICATION_NAME.exe
Name: APPLICATION_NAME, Version=8.0.0.15072, Culture=neutral, PublicKeyToken=null
Type: Windows Application

كنت على الطريق الصحيح في الواقع. إذا نظرت في نافذة Disassembler في العاكس سترى السطر التالي إذا تم إنشاؤه في وضع التصحيح:

[assembly: Debuggable(...)]

ماذا عن استخدام الأداة المساعدة IsDebug Jeff Key's؟ إنها مؤرخة قليلاً ، ولكن بما أن لديك Reflector يمكنك فكها وإعادة تجميعها في أي إصدار من إطار العمل. فعلت.


هنا هو إصدار VB.Net من الحل المقترح من قبل ZombieSheep

Public Shared Function IsDebug(Assem As [Assembly]) As Boolean
    For Each attrib In Assem.GetCustomAttributes(False)
        If TypeOf attrib Is System.Diagnostics.DebuggableAttribute Then
            Return DirectCast(attrib, System.Diagnostics.DebuggableAttribute).IsJITTrackingEnabled
        End If
    Next

    Return False
End Function

Public Shared Function IsThisAssemblyDebug() As Boolean
    Return IsDebug([Assembly].GetCallingAssembly)
End Function




release