Форум: "Прочее";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
ВнизПоясните, как правильно пользоваться 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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.086 c