ПОПЕРЕДЖЕННЯ документація
MSDN для перемикання / налагодження (у Visual Studio це інформація про налагодження), здається, застаріла! Це те, що є невірним
Якщо ви використовуєте / debug: full , майте на увазі, що деякий вплив на швидкість та розмір коду, оптимізованого JIT, і невеликий вплив на якість коду з / debug: full . Ми рекомендуємо / налагоджувати: pdbonly або відсутність PDB для створення коду випуску.
Одна різниця між / debug: pdbonly та / debug: full полягає в тому, що з / debug: full компілятор випускає a DebuggableAttribute
, який використовується для того, щоб повідомити компілятору JIT, що інформація про налагодження доступна.
Тоді, що зараз правда?
- Тільки для Pdb - До .NET 2.0 він допомагав розслідувати викиди крапів із випущеного продукту (машини клієнта). Але це не дозволило приєднати налагоджувач. Це не так .NET 2.0. Це точно так само, як і Full .
- Повна - Це допомагає нам досліджувати демпінг-збої, а також дозволяє нам приєднати налагоджувач для випуску збірки. Але на відміну від MSDN згадує, це не впливає на продуктивність (оскільки .NET 2.0). Це робить точно так само, як і лише Pdb .
Якщо вони точно такі, чому ми маємо ці варіанти? Джон Роббінс (бог налагодження вікон) з’ясував, що вони існують з історичних причин.
Ще в .NET 1.0 були відмінності, але в .NET 2.0 немає. Схоже, що .NET 4.0 піде за тією ж схемою. Після подвійної перевірки з командою налагодження CLR взагалі немає різниці.
Те, що контролює, чи робить JITter збірку налагодження, - це перемикач / оптимізувати. <…>
Суть полягає в тому, що ви хочете скласти свої версії версій за допомогою / optimize + та будь-якого з / dbug-комутаторів, щоб ви могли налагоджувати вихідний код.
потім він продовжує доводити це.
Зараз оптимізація є частиною окремого перемикача /optimize
(у візуальній студії це називається Optimize code
).
Коротше кажучи, незалежно від налаштування DebugInfo лише для pdb або full, ми матимемо однакові результати. Рекомендація - не уникати жодного, оскільки це позбавить вас можливості аналізу відвалів випущеного продукту або приєднання налагоджувача.