2016-07-12 7 views
0

На Delphi 7 я получил предупреждающее сообщение: «Установка точки останова данных в месте расположения стека может привести к нестабильной работе вашей программы или системы. Краткое описание этого сообщения не объясняет причину, по которой программа (или система) может стать нестабильной. Он говорит только, что это может произойти.Delphi 7: фактическая причина предупреждения точки останова данных

Я хотел бы попросить вас дать конкретное объяснение по причине того, почему/когда программа (или система) будет неустойчивой.

+0

Что вы подразумеваете под «как я могу предотвратить это?» Кроме того, с какими проблемами вы сталкиваетесь. Почему бы вам просто не закрыть предупреждающее сообщение и продолжить. Что происходит, когда вы это делаете? –

+0

Я снял эту часть вопроса, это не самое главное. Для меня важным является конкретное объяснение причины – Annabelle

+1

Если угадать, что стек используется и повторно используется так часто, что нарушение его модификации, скорее всего, сделает отладчик непригодным. Трудно понять, как система может быть затронута. Возможно, предупреждающий текст датируется более старыми версиями окон. –

ответ

1

Точка останова данных запускается операцией записи в память в указанном месте. Обнаружение этих операций, будь то с помощью аппаратной точки останова или других методов, не может, насколько мне известно, привести к тому, что программа, не говоря уже о всей системе, станет нестабильной.

Однако существуют проблемы с созданием точек останова данных в области стека. Эти проблемы могут привести к поведению отладчиков , которые почти наверняка нежелательны и могут считаться «нестабильностью» из-за громкости и частоты точек останова, что делает отладчик непригодным.

Но это только степень, в которой «система» или «программа» могут быть нестабильными.

Сообщение об ошибке, скорее всего, использует сокращенный язык, который, возможно, вводит в заблуждение в попытке передать это в терминах, которые подходят для короткого короткого сообщения об ошибке, поскольку фактическое точное описание объясняется сложнее и, возможно, которые могут быть поняты многими разработчиками.

Возможно также, что размещение точки останова данных в стеке сделало потенциально причиной более сложных системных проблем pre-Win32 (я не знаю точно, но могу представить, что это возможно - это было конечно проще для отказа программы сбой всей системы под Win16); то есть это сообщение является зависанием от Delphi 1 и просто не обновляется, чтобы отразить большую защиту, которая обрабатывается в Win32.