Я предполагаю, что вы используете c ++.
В Microsoft C ++ есть переключатель компилятора /GS
, чтобы выяснить, есть ли переполнения буфера. Подробнее и как это работает см. Проверка безопасности компилятора MSDN в глубину .
По крайней мере в c # -developpment (но, надеюсь, также и в c ++) есть опция отладчика
«Прерывать, когда возникает исключение ...», которое останавливает выполнение программы, если выбрасывается исключение (поскольку среда выполнения c ++ обнаружила переполнение буфера. В vs2010 он находится в разделе Отладка / Исключения ...
Вы также можете использовать Microsoft PREfast , который сканирует ваш исходный код на наличие потенциально небезопасных функций (strcpy)