информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеСетевые кракеры и правда о деле ЛевинаАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Может компилятор балует? Попробуй выключить оптимизацию, переписать соседние строчки, вставить какую-нибудь ненужную операцию. 28.10.06 10:55  Число просмотров: 1244
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
<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-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach