Отладка в смешанном режиме (C , C #, VB)

#c# #c #.net #debugging #visual-studio-2019

#c# #c #.net #отладка #visual-studio-2019

Вопрос:

В этой статье рассматривается включение отладки в смешанном режиме. Это позволяет управляемому приложению вызывать собственную библиотеку DLL или собственное приложение вызывать управляемую библиотеку DLL.

Есть ли негативные последствия для включения этого для всех проектов в моем решении? Например, отрицательно ли это влияет на производительность, время сборки или количество файлов, попадающих на диск во время сборки, и так далее?

В вышеупомянутой статье это не обсуждается.

Комментарии:

1. При отладке часто не достигается одинаковая производительность, когда код выполняется без отладки. Проблемы возникают только при попытке запустить код без отладки, и он не работает. Затем вам нужно выяснить, почему отладка не обнаружила ошибок.

2. Хорошо управляемый режим отрицательно влияет на производительность, так сказать, по дизайну, но я уверен, что вы это знали.

Ответ №1:

Время сборки:

Независимо от аспектов смешанного режима, затраты времени на создание общих конфигураций отладки, как правило, разумны для случаев, когда PDF-файлы ваших собственных dll / частей становятся очень большими (но в целом относительно неактуальными по сравнению с обычными конфигурациями выпуска). Несомненно, это зависит от многих аспектов (конфигурация компоновщика, аппаратное обеспечение, параллельное связывание?). С акцентом на смешанный режим, не должно быть никаких дополнительных релевантных причин воздействия, поскольку управляемые части в любом случае предоставляют соответствующую информацию PDB.

Время выполнения:

Зависит от многих аспектов. Но да, в целом вы будете наблюдать (негативное) влияние здесь по сравнению с чистой встроенной отладкой, по крайней мере, с акцентом на производительность и использование памяти (!).). Например, по крайней мере, у бывших MS-отладчиков (до VS 2017) было несколько довольно серьезных проблем при обработке больших сеансов отладки в смешанном режиме. Общим — для новичков иногда нелегко заметить — ограничителем производительности здесь являются условные точки останова на управляемых и собственных частях, что заставляет отладчик очень часто переключать свой рабочий контекст (условные точки останова оказывают почти такое же влияние на производительность, как и «классические» точки останова).).