Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
11-1159931358
vampir_infernal
2006-10-04 07:09
2007.05.20
Как спрятать форму из панели задач?


2-1177942989
pound
2007-04-30 18:23
2007.05.20
где находится курсор в редактируемой ячейке TStringGrid.


2-1178093914
Perf2k2
2007-05-02 12:18
2007.05.20
ListView: как проверить, выеделена ли пустая строка или нет?


2-1175851104
TIF
2007-04-06 13:18
2007.05.20
PageContol + WebBrowser


2-1177419557
bagos
2007-04-24 16:59
2007.05.20
закраска ячеек в гриде





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский