2013-08-18 6 views
71

Я использую Предварительный просмотр Visual Studio 2013, хотя я уверен, что видел его в более ранних версиях. При создании нового проекта с помощью мастера я выбираю C++, Win32 Console Application, и есть возможность включить проверки жизненного цикла безопасности в моем проекте. Может ли кто-нибудь объяснить, что этот вариант делает для моего кода/проекта?Что такое проверка жизненного цикла безопасности в Visual Studio?

ответ

67

Переключатель /sdl описан here. Он превращает некоторые предупреждения в ошибки, которые не влияют на ваш код. Кроме того, он более агрессивно проверяет /GS.

Не ожидайте от него слишком многого. Microsoft SDL действительно является обходным решением для программирования стиля C в 1980-х годах. Даже если вы используете 20-й век C++, вам это не нужно. Например. operator+(std::string, std::string) является безопасным и портативным. Решение Microsoft SDL здесь в отличие от этого не переносимо и не безопасно. Идея, лежащая в основе /GS, заключается в том, чтобы найти ошибки с обработкой строки C во время выполнения и прервать программу, ограничивая последствия, но не делая ее безопасной.

+0

Строки - не единственная причина ошибок памяти./sdl может помочь вам определить, среди прочего, использование униализированных переменных. –

+0

@ JørgenFogh: Вы описываете предупреждение C4700, для которого вам не нужно/sdl. Это предупреждение уровня 1; вам необходимо отключить ** все ** предупреждения до того, как C4700 исчезнет. Если ваши разработчики делают это, у вас есть проблемы, которые SDL не решит. – MSalters

+0

Я помню, где-то читал, что предупреждения становятся более подробными, потому что/sdl включает более подробный статический анализ. Я не могу вспомнить, где я его читал. –

2

Жизненный цикл развития безопасности Microsoft - это процесс разработки программного обеспечения, который Microsoft предлагает и предлагает Microsoft для снижения затрат на обслуживание программного обеспечения и повышения надежности программного обеспечения, связанного с ошибками, связанными с обеспечением безопасности программного обеспечения.

Они могут помочь:

http://download.microsoft.com/download/B/5/A/B5A89F4C-D591-4AAB-BF45-D818D80527B6/SDLServices2011.pdf

http://msdn.microsoft.com/en-us/library/windows/desktop/84aed186-1d75-4366-8e61-8d258746bopq.aspx

+7

Это много материала. Что действительно проверяет опцию на мой код? –