Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.20;
Скачать: CL | DM;

Вниз

Поясните, как правильно пользоваться CPU-window?   Найти похожие ветки 

 
Ega23 ©   (2007-04-18 16:08) [0]

Ситуация такая: есть здоровенный проект, exe + штук 15 dll. Где-то в каком-то месте (брейк-поинтами отловить не удалось) выскакивает VariantTypeCast Error : null в integer сконвертить не может. Т.е. где-то прокололся. Где - хоть убей не пойму.
Смотрю в CPU. Вижу ассемблерный код. Предполагаю, что где-то в дебрях varianta нахожусь.
CallStack ничего не даёт толком. Что делать - хоть убей не понимаю.

Объясните, чё делать-то?


 
Плохиш ©   (2007-04-18 16:12) [1]


> Объясните, чё делать-то?

Дааа, тут без бутылки не разобраться...


 
Ega23 ©   (2007-04-18 16:13) [2]


> Дааа, тут без бутылки не разобраться...


А более конструктивные предложения есть? Блин, полдня уже убил.


 
@!!ex ©   (2007-04-18 16:17) [3]

А CPU window тут не поможет.
Сделать отдельно копию текущей версии(чтобы версию не поломать), и локализовывать это место.
Сначало логирование или Exception"ы на верхних уровнях. Потом все ниже и ниже. Так и дойдешь до ошибки.
Ведь у меня другая роблема было. Где то было вечное зацикливание, а оно таким методом не ловится.... :\
Я даже потом узнал где, но понял почему существенно позднее, когда узнал, что мне моделлер ошибся при создании моделей и джоинтый не правильно расставил....


 
Плохиш ©   (2007-04-18 16:18) [4]


> Блин, полдня уже убил.

Вот она ошибка - влезть в проблему по уши, вместо того, чтобы отвлечься и дать мозгу в фоне спокойно поработать над анализом. Зря что ли поговорку придумали - "Утро вечера мудренее" :-)


 
IMHO ©   (2007-04-18 16:20) [5]

Установи Eureka.


 
StriderMan ©   (2007-04-18 16:30) [6]

А в Application.OnException стек не раскручивается?


 
Ega23 ©   (2007-04-18 16:31) [7]

Я больше чем увер, что где-то кто-то поставил
try
 ....
except
end;
Из-под отладчика ошибка видна, а так - нет. Причём, что самое интересное, на работу программы не влияет сильно.


 
@!!ex ©   (2007-04-18 16:38) [8]

> [7] Ega23 ©   (18.04.07 16:31)

Да... Противная штука....
Но под отладчиком то на нее пофиг, так что удачи. ;)


 
Плохиш ©   (2007-04-18 16:50) [9]


> Ega23 ©   (18.04.07 16:08)  


> CallStack ничего не даёт толком.

Всё-равно должны быть какие-то знакомые имена вызванных процедур/функций, от них и отталкивайся.

> Ega23 ©   (18.04.07 16:31) [7]

Если есть возможность, то перекомпилировать весь проект с debug-dcu.

> Причём, что самое интересное, на работу программы не влияет
> сильно.

может поэтому и вставили когда-то except end , чтобы пользователя не шокировать? Ну тут только медленно идти по callstack вверх пока не найдёж, что-нибуть знакомое...


 
oxffff ©   (2007-04-18 17:25) [10]

_VarCast?


 
oxffff ©   (2007-04-18 17:31) [11]

Далее
function _VarToInteger(const V: TVarData): Integer;


 
Ega23 ©   (2007-04-18 17:36) [12]


> _VarCast?


Что _VarCast?


 
oxffff ©   (2007-04-18 17:38) [13]


> Что _VarCast?


var a,b:variant;
begin
b:=null;
VarCast(a,b,varInteger);

Ошибка эта?


 
Плохиш ©   (2007-04-18 17:41) [14]


> oxffff ©   (18.04.07 17:38) [13]

Нифига ж ты заморочился

var i:Integer;
...
i := Null;

достаточно.


 
oxffff ©   (2007-04-18 17:45) [15]


> Плохиш ©   (18.04.07 17:41) [14]
>
> > oxffff ©   (18.04.07 17:38) [13]
>
> Нифига ж ты заморочился
>
> var i:Integer;
> ...
> i := Null;
>
> достаточно.


Да я такой. :)


 
Ega23 ©   (2007-04-18 17:51) [16]

Да то, что я к integer null пытаюсь приравнять - это мне понятно прекрасно. Непонятно где. Потенциально - масса мест, т.к. данные из БД беруться, где они, теоретически, могут быть как null.


 
pasha_golub ©   (2007-04-18 17:52) [17]


> IMHO ©   (18.04.07 16:20) [5]
>
> Установи Eureka.
>

+1


 
Плохиш ©   (2007-04-18 17:57) [18]


> Ega23 ©   (18.04.07 17:51) [16]

Вот поэтому стараюсь не использовать свойство Value у полей, особенно если знаю какой тип мне нужен.


 
Ega23 ©   (2007-04-18 18:01) [19]


> Вот поэтому стараюсь не использовать свойство Value у полей,
>  особенно если знаю какой тип мне нужен.
>


Проект не я один писал. В общей сложности 5 человек руку приложили. Одновременно - до 4-х человек бывало доходило.
Со всеми вытекающими последствиями.


 
Игорь Шевченко ©   (2007-04-18 18:02) [20]

Плохиш ©   (18.04.07 17:57) [18]


> Вот поэтому стараюсь не использовать свойство Value у полей,
>  особенно если знаю какой тип мне нужен.


Кроме дополнительного контроля типов еще и генерируемый код меньше при таком способе.


 
oxffff ©   (2007-04-18 18:16) [21]

Ega23 ©   (18.04.07 17:51) [16]


> Да то, что я к integer null пытаюсь приравнять - это мне
> понятно прекрасно. Непонятно где. Потенциально - масса мест,
>  т.к. данные из БД беруться, где они, теоретически, могут
> быть как null.


А нельзя поставить Бряк на

     varNull:
       begin
         if NullStrictConvert then
->            VarCastError(varNull, varInteger);
         Result := 0;
       end;

в  _VarToInteger


 
oxffff ©   (2007-04-18 18:32) [22]

Далее при попадании в  

except
  HandleConversionException(V.VType, varInteger);
  Result := 0;
 end;

Либо принудительно заменить Next SEH, либо модифицировать ASM код, чтобы нормально завершить процедуру и попасть в то самое заветное место


 
Ega23 ©   (2007-04-18 18:44) [23]


> oxffff ©   (18.04.07 18:32) [22]
>
> Далее при попадании в  
>
> except
>   HandleConversionException(V.VType, varInteger);
>   Result := 0;
>  end;
>
> Либо принудительно заменить Next SEH, либо модифицировать
> ASM код, чтобы нормально завершить процедуру и попасть в
> то самое заветное место
>


Вообще-то задача состоит найти в скрипах разворачивания базы то место, где вместо нормального числа null стоит.



Страницы: 1 вся ветка

Текущий архив: 2007.05.20;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.03 c
15-1177168718
Pazitron_Brain
2007-04-21 19:18
2007.05.20
Как создать swap файл при загрузке установшика netbsd?


2-1178099432
Neket
2007-05-02 13:50
2007.05.20
Проверка наличия дирректории.....


2-1177655849
OlegMV
2007-04-27 10:37
2007.05.20
Проблема с координатами


15-1175945059
Чапаев
2007-04-07 15:24
2007.05.20
Оцените резюме, плз


2-1177648851
sergeyst
2007-04-27 08:40
2007.05.20
Совместная работа над проектом