Да, многие вещи в структурах данных Windows меняются, когда подключен отладчик. Он меняет способ выделения / освобождения памяти, добавляет дополнительный служебный код и «маркеры» в стек (когда-либо замечал значения F00D во вновь выделенной памяти), фактически многие изменения используются анти-отладчиками для определения, является ли приложение быть отлаженным.
В интерпретируемых языках (Java, .NET) среда выполнения часто генерирует различные машинные инструкции при запуске под отладчиком, чтобы помочь ему перехватывать и отображать исключения, показывать исходный код и т. Д. Обычно он также генерирует неоптимизированный код, когда отладчик прилагается.
Некоторые из этих изменений влияют на поведение программного обеспечения и могут привести к усложнению переходных ошибок, вызванных оптимизацией или чрезвычайно тонкими зависимостями.