Отладка против выпуска размер DLL - PullRequest
3 голосов
/ 28 октября 2009

Почему в cpp dll в режиме отладки X10 больше, чем релиз, а в .Net они почти одинакового размера?

Ответы [ 4 ]

3 голосов
/ 28 октября 2009

Для отладки программы на C ++ в DLL нужно хранить много дополнительной информации, чтобы отладчик мог узнать о коде во время выполнения. В C ++ нет требований времени выполнения, чтобы иметь возможность проверять код в отличие от C #, что позволяет проводить расширенную проверку во время выполнения, также известную как рефлексия. Эта информация есть в C # независимо от того, используется ли режим отладки или выпуска.

Кроме того, C ++ обычно компилируется непосредственно в машинный код в режиме выпуска, цель компилятора - максимально оптимизировать код, например. удалить любую и всю постороннюю информацию и код. В C # компилятор компилируется в псевдокод, который как раз вовремя компилируется по мере необходимости. Этот код сохраняет большую часть того, что требуется для отладки, независимо от того, является ли он версией выпуска или отладки, которую вы строите. Настолько, что можно написать декомпилятор, который вернет вам код из сборки во время выполнения.

1 голос
/ 28 октября 2009

.Net DLL содержат метаданные, которые поддерживают отображение во время выполнения, безопасность типов и безопасность доступа к коду. Единственное, что есть в PDB - это имена локальных переменных и номера строк.

Где, как и в C ++, для поддержки отладки необходимо вводить дополнительные метаданные, а иногда и no-ops.

1 голос
/ 28 октября 2009

Может быть, потому что в .Net, это механизм времени выполнения, который обрабатывает все проверки отладки, тогда как в CPP все проверки компилируются в DLL.

0 голосов
/ 28 октября 2009

Вы имеете в виду C # не .NET. Также это зависит от вашего проекта.

У меня есть одна C ++ / CLI DLL, которая в выпуске 54K, а в отладке 94K,
и другой, который составляет 88 КБ в выпуске и 124 КБ в отладке.

Мой C ++ / CLI EXE, в состав которого входит MFC, имеет 471 КБ в выпуске и 4446 КБ в отладке!

А затем моя C # DLL будет 135KB и в отладке, и в выпуске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...