Отладчик показывает неверную инструкциюC#

Место общения программистов C#
Ответить
Anonymous
 Отладчик показывает неверную инструкцию

Сообщение Anonymous »

Иногда случается, что отладчик Visual Studio показывает неверную текущую инструкцию. Самые простые возможные причины:
  • Устаревшие файлы .pdb. Эти файлы содержат информацию о том, какое смещение двоичного файла соответствует какой строке кода. Если эти файлы устарели, очевидно, что отладчик покажет недопустимую строку.
  • Программа скомпилирована в режиме выпуска вместо режима отладки. В режиме Release обычно включена оптимизация, так что оптимизатор может изменить код, чтобы он стал быстрее (или меньше). В таком случае двоичный файл больше не соответствует исходному коду, поэтому отладчик не может показать фактическую выполненную строку.
Но мой случай был другой. Вот фрагмент исходного кода (C#):

Код: Выделить всё

if (match.Groups.Count != 4)
throw new InvalidOperationException("Internal error: Invalid regular expression!");

MyEnum myEnum;
try
{
// (...)
Я отладил исходный код. Отладчик остановился на условном операторе и показал, что match.Groups.Count на самом деле равен 4. Очевидно, оператор throw должен был быть пропущен, но, что удивительно, этого не произошло. Однако после «выполнения» оператора throw отладчик перешел к следующему допустимому оператору и продолжил выполнение, как и предполагалось.

Что произошло? п>

Подробнее здесь: https://stackoverflow.com/questions/167 ... nstruction
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»