информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыАтака на InternetПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
+1 к Shaman'у и Tamas'у. Поставь сравнение интересующего значения перед вызовом Win32Check, и будет тебе щастье. 29.10.06 01:10  Число просмотров: 1094
Автор: Fighter <Vladimir> Статус: Elderman
Отредактировано 29.10.06 01:20  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
<programming>
Появление исключения до вызова процедуры генерации исключения — процессоры стали слишком быстрые? ;-) 28.10.06 09:07  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Отлаживаю код на Delphi 7. Поставил точку останова до вызова функции API ReadFile, следующая процедура -- Win32Check, которая вызывает исключение, если булевое значение в её единственном входящем параметре неистинно, к примеру
Win32Check(hndl <> INVALID_HANDLE_VALUE).
Ну и ладно. Остановился в точке останова. Нажал F8 (построчная отладка), чтобы воткнуться в Win32Check, и посмотреть на параметр, который пойдёт в эту функцию... Фигассе, исключение вырабатывается ещё до захода в Win32Check!

Как такое может быть? Я в шоке. Причём исключение генерит именно Win32Check, с его глупым сообщением "Call to OS function failed".
А ты случайно не путаешь клавиши F7 и F8? Пошаговая отладка всегда была F7 30.10.06 19:41  
Автор: Neznaika <Alex> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
А построчная — F8 :) 31.10.06 12:36  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Посмотри debug view > CPU 30.10.06 12:00  
Автор: Cyril <sc> Статус: Member
Отредактировано 30.10.06 12:02  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
> Отлаживаю код на Delphi 7. Поставил точку останова до
> вызова функции API ReadFile, следующая процедура --
> Win32Check, которая вызывает исключение, если булевое
> значение в её единственном входящем параметре неистинно, к
> примеру
> Win32Check(hndl <> INVALID_HANDLE_VALUE).
> Ну и ладно. Остановился в точке останова.
Попробуй нажать ctrl+alt+c и в появившемся окне понажимать F8
>Нажал F8
> (построчная отладка), чтобы воткнуться в Win32Check, и
> посмотреть на параметр, который пойдёт в эту функцию...
> Фигассе, исключение вырабатывается ещё до захода в
> Win32Check!
может быть компилятор считает что выражение
hndl <> INVALID_HANDLE_VALUE всегда ложь и поэтому сразу генерит исключение
INVALID_HANDLE_VALUE = DWORD(-1) = LongWord(-1)
результат ReadFile это bool насколько я понимаю всегда >=0
(-1) < ReadFile поэтому компилятор решил оптимизировать этот участок
кода и сразу генерить исключение ;-) умный какой
Не факт что все именно так, это лишь одна из версий ;-)


Win32Check(hndl <> INVALID_HANDLE_VALUE).

>
> Как такое может быть? Я в шоке. Причём исключение генерит
> именно Win32Check, с его глупым сообщением "Call to OS
> function failed".
Не, там был другой контекст... Уже пофиг что там было, всё равно отладил. 30.10.06 15:26  
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 30.10.06 15:27  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
Просто это я затеял к тому, что раньше трава была зеленее, деффки ну вы поняли какие были деффки -))

Вот я думаю -- последний раз плотно кодил на Delphi когда процы были 800 МГц PIII -- самое оно. Сейчас сижу на селероне 3,2 ГГЦ. Раньше таких глюков в отладчике вроде не было. Может отладчик «не догадывается», что будут такие скорости, и где-то косячит, не успевая воткнуть INT3 куда надо? -)))
Может компилятор балует? Попробуй выключить оптимизацию, переписать соседние строчки, вставить какую-нибудь ненужную операцию. 28.10.06 10:55  
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
мне кажится это глюк самого отладчика... 28.10.06 22:36  
Автор: Tamas Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
+1 к Shaman'у и Tamas'у. Поставь сравнение интересующего значения перед вызовом Win32Check, и будет тебе щастье. 29.10.06 01:10  
Автор: Fighter <Vladimir> Статус: Elderman
Отредактировано 29.10.06 01:20  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
+1 к Shaman'у, Tamas'у и Fighter-у 30.10.06 13:43  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Исторически сложилось так, что у борланда не получаются нормальные компиляторы. Как вариант я бы посоветовал тебе включить опцию листинга (генерация асма + соответствующие строки исходника) и полезть туда в поисках правды
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach