Текущий архив: 2013.06.16;
Скачать: CL | DM;
Вниз
Отладка VCL удаленно Найти похожие ветки
← →
Ega23 © (2013-02-06 15:56) [40]Ты бы в первую очередь версию OLEDB проверил.
← →
Pit (2013-02-06 16:05) [41]
> Ты бы в первую очередь версию OLEDB проверил.
собственно, а какая версия нужна? Я не в курсе..
Есть понимание, что конкретно на тех компьютерах что-то не то (причем, там ДВА компьютера и с одинаковой проблемой).
Но с другой стороны я считаю, что какая бы версия не была - исключения AV возникать не должно. Это говорит о том, что код чем-то непродуман.
Сейчас буду узнавать hInstance и по методу Розыча узнавать по MAP файлу где собственно проблема.
← →
Ega23 © (2013-02-06 16:17) [42]
> я считаю
Я не пойму никак: у тебя проблема, или ты таки считаешь?
← →
знайка (2013-02-06 16:41) [43]
> собственно, а какая версия нужна? Я не в курсе..
что пишем? :)
← →
Rouse_ © (2013-02-06 16:42) [44]Ты лучше попробуй эврику нормально сконфигурировать.
Протестировать просто, объяви левую функцию экспортируемую и в ней к примеру
PInteger(0)^ := 123;
из программы ее дергай. Если эврика нормально настроена, должна по логике поймать и вывести лог.
← →
Pit (2013-02-06 16:44) [45]
> что пишем? :)
а какая разница?
Сервер приложения отвечает таким форматом. Он сохраняется в файл, на этот файл натравливается AdoQuery
← →
Pit (2013-02-06 16:56) [46]
> Ты лучше попробуй эврику нормально сконфигурировать.
вот это второй вопрос, тут знатоки по эврики не отметились (да и вообще по старой мастаковоской привычке пытаются обосрать больше, чем помочь), вот к тебе и вопрос.
1) это я озвучивал уже, несмотря на то, что DLL я собрал с еврикой и EAccessViolation точно произошел - нигде не обнаружил файла .elf
думаю пока, может прав доступа в каталог с EXE нету? Хз...
2) эврика когда раскручивает стек она вроде бы в VCL модули не заходит, да? А можно это как-то реализовать?
← →
KSergey © (2013-02-06 17:04) [47]> Pit (06.02.13 16:05) [41]
>
> > Ты бы в первую очередь версию OLEDB проверил.
>
> собственно, а какая версия нужна? Я не в курсе..
Для начала просто поставить ее, последней версии, например.
← →
Потапыч (2013-02-06 17:09) [48]TeamViewеr пробовал? ;)
← →
sniknik © (2013-02-06 17:11) [49]> на этот файл натравливается AdoQuery
ну вот и почему все странности именно у использующих его? это рок.
вот этоtry
[DataSetExample].LoadFromFile(...)
except on E: Exception do
Вывод в лог...
замени наtry
sName:= ...
with TADODataSet.Create(nil) do
try
LoadFromFile(sName);
finally
Free;
end;
except on E: Exception do
Вывод sName
Вывод в лог...
и покажи записанную имяфайла-ошибку
> может прав доступа в каталог с EXE нету? Хз...
может и к файлу там нету?
← →
Inovet © (2013-02-06 17:15) [50]> [48] Потапыч (06.02.13 17:09)
> TeamViewеr пробовал?
Версии всего окружения посмотреть?
← →
sniknik © (2013-02-06 17:18) [51]> может прав доступа в каталог с EXE нету? Хз...
кстати если в программ файлес на вин7/... пишется то там может быть редирект в папку данных программы. "операционка" заботится. т.е. он пишется, но не туда где ждешь.
← →
Pit (2013-02-06 17:20) [52]
> замени на
не могу. Это общий модуль, по сути принимает SQL-запрос и TCustomADODataSet, в который и пихает результат запроса.
> и покажи записанную имяфайла-ошибку
ошибку показывал:Access violation at address 0F53510A in module "MY_MOD~1.DLL". Read of address 00000008
Имя файла верное, файл реально существует на диске:
как пример: C:\WINDOWS\TEMP\{101FBAFD-39D0-4824-ABBF-23BA6435FC29}.xml
← →
Rouse_ © (2013-02-06 17:27) [53]
> эврика когда раскручивает стек она вроде бы в VCL модули
> не заходит, да? А можно это как-то реализовать?
Заходит.
> нигде не обнаружил файла .elf
проверь галку о том что запись должна вестись.
Можешь перенастроить путь, если не пишет туда куда доступа нет.
не забудь генерацию мапфайла выставить и отладочной инфы по полной программе, для более полной информации.
← →
Rouse_ © (2013-02-06 17:29) [54]
> Rouse_ © (06.02.13 17:27) [53]
> Заходит.
точныы если не подключена галка Use debug dcu`s то будет просто адреса со стека выводить, а если включена, тогда и имена процедур и т.п. выведет
← →
sniknik © (2013-02-06 17:29) [55]> не могу. Это общий модуль, по сути принимает SQL-запрос и TCustomADODataSet, в который и пихает результат запроса.
но поставить временно перед основным в собственном try except с маркеров логе что именно оттуда... ?
> ошибку показывал:
нет, нужно от "моего" кода. без этого это не проверка.
> Имя файла верное, файл реально существует на диске:
нет, интересует на момент ошибки, а не "как пример". иначе это не проверка.
← →
sniknik © (2013-02-06 17:31) [56]> с маркеров
с маркером
← →
Pit (2013-02-06 18:13) [57]проблема решена.
sniknik, ты был считай прав. Оказывается к датасету был привязан датсурс, к нему привязан cxGrid, а вот на событие cxGrid"а и был код невалидный.
Выявил это по методу Розыча, поставил BP на вычисленный адрес exception"а с учетом сдвигов.
Всем спасибо!
← →
Pit (2013-02-06 18:16) [58]
> sniknik, ты был считай прав. Оказывается к датасету был
> привязан датсурс, к нему привязан cxGrid, а вот на событие
> cxGrid"а и был код невалидный.
при этом Disable(Enable)COntrols почему то не был использован.
← →
Плохиш © (2013-02-06 18:32) [59]
> (да и вообще по старой мастаковоской привычке пытаются обосрать
> больше, чем помочь)
Я так понимаю, что это в итоге надо считать оскорблением отвечающих!
← →
знайка (2013-02-06 18:54) [60]
> ты был считай прав
оборжаться
а невалидный код был только на 2 машинах? :)
← →
Pit (2013-02-06 21:08) [61]
> а невалидный код был только на 2 машинах? :)
нет, настройки из БД которые они тянули были специфичные для этого места, в связи с чем код создавал AV
> точныы если не подключена галка Use debug dcu`s то будет
> просто адреса со стека выводить, а если включена, тогда
> и имена процедур и т.п. выведет
от этой галочки зависит наличие имен методов в отчете .elf?
А я всегда думал, что эта галочка влияет только на исполнение под средой, она типа подтягивает дебажные dcu, чтобы отладчик мог бегать по исходникам стандартных компонент. А на конечный EXE это не влияет...
← →
Rouse_ © (2013-02-06 21:34) [62]
> от этой галочки зависит наличие имен методов в отчете .elf?
от нее зависит генерация МАР файла, по которому имена и распознаются.
← →
Rouse_ © (2013-02-06 21:35) [63]
> Pit (06.02.13 21:08) [61]
> нет, настройки из БД которые они тянули были специфичные
> для этого места, в связи с чем код создавал AV
Кстати, в итоге мое предположение об обниленом объекте верное было?
← →
Rouse_ © (2013-02-06 21:40) [64]
> Rouse_ © (06.02.13 21:34) [62]
> от нее зависит генерация МАР файла, по которому имена и
> распознаются.
зы: ну а МАР файл уже конвертится в ресурсы и линкуется к конечному экзешнику. Методика практически целиком слизана у джедаев, но достаточно хитро допилена в уровне эвристики на разборе стека вызовов (относится только для Эврики, у MadExcept свое).
← →
Inovet © (2013-02-06 22:17) [65]> [61] Pit (06.02.13 21:08)
> настройки из БД которые они тянули были специфичные для
> этого места, в связи с чем код создавал AV
Т.е. бэкап БД, развёрнутый у тебя, мог выявить причину?
← →
Pit (2013-02-06 23:53) [66]
> ну а МАР файл уже конвертится в ресурсы и линкуется к конечному
> экзешнику.
погодь, так map файл генерится только если указана соответствующая опция. Я же могу включить еврику и НЕ включать генерацию map файла (ну он не появится рядом с EXE) или еврика умная и как-то все равно заставляет генерировать map-файл?
> Методика практически целиком слизана у джедаев, но достаточно
> хитро допилена в уровне эвристики на разборе стека вызовов
слушай, а как еврика выдает строчку кода? Ведь в map файле только начало - концы методов, то есть можно сказать что адрес такой-то - он внутри метода такого-то, но как возможно указать конкретную строчку?
> Кстати, в итоге мое предположение об обниленом объекте верное
> было?
да, все подтвердилось. Малый адрес в AV действительно правильно сигнализировал о вызове метода обниленного объекта. И как раз в этом методе идет обращение к полю класса, который описан вторым, типаTMyClass = class
private
FInternal1: TMyInternal1;
FInternal2: TMyInternal2;
...
и обращение в методе генерировавшем AV было к FInternal2
> Т.е. бэкап БД, развёрнутый у тебя, мог выявить причину?
а БД и так едина. Просто тянет свои настройки.
Сложная система, долго объяснять. В принципе сейчас задним умом я уже понимаю пару способов, как бы я мог вызвать эмуляцию ошибки на своей девелоперской машине... Но изначально полностью повторить окружение - нереал. На удаленной машине там и права другие, плюс системы защиты стоят специфические, плюс... ну короче много специфики.
← →
Rouse_ © (2013-02-07 00:01) [67]
> погодь, так map файл генерится только если указана соответствующая
> опция. Я же могу включить еврику и НЕ включать генерацию
> map файла (ну он не появится рядом с EXE) или еврика умная
> и как-то все равно заставляет генерировать map-файл?
На уровне эксперта она включает данную опцию при активации самой эврики. Если снял после её включения - то есесно файла и не будет.
> слушай, а как еврика выдает строчку кода? Ведь в map файле
> только начало - концы методов, то есть можно сказать что
> адрес такой-то - он внутри метода такого-то, но как возможно
> указать конкретную строчку?
Они все есть в МАР, ну точнее их оффсеты (в виде кода) ну и адресные оффсеты соответственно, по которым и идет привязка.
> да, все подтвердилось.
Ну значит на что-то еще гожусь :)
← →
Германн © (2013-02-07 01:58) [68]
> погодь, так map файл генерится только если указана соответствующая
> опция.
Никогда не понимал тех, кто снимал эту галку! Ну чем она мешает?
← →
Rouse_ © (2013-02-07 10:24) [69]
> Германн © (07.02.13 01:58) [68]
> Никогда не понимал тех, кто снимал эту галку! Ну чем она
> мешает?
Немного увеличивает вес приложения, хотя это редко для кого в последнее время бывает критичным.
← →
Pit (2013-02-07 10:44) [70]
> Немного увеличивает вес приложения
почему?!?!
Это если включать отладочную инфу в EXE. А MAP-файл то что, он генерится рядом с EXE...?
← →
Rouse_ © (2013-02-07 11:58) [71]
> Pit (07.02.13 10:44) [70]
> почему?!?!
С этим не разбирался.
← →
Cobalt © (2013-02-07 18:23) [72]Pit
пойми одну простую вещь. На таком коде:try
[DataSetExample].LoadFromFile(...)
except on E: Exception do
Вывод в лог...
Эврика ничего не будет ловить.
потому что ты уже всё поймал и обработал.
Сравни на чистом проекте с Эврикой:Caption := DateToStr(StrToDateTime("99/99/1998", Date));
иCaption := DateToStr(StrToDateTimeDef("99/99/1998", Date));
Так что убирай свои try/except, и тогда за работу возьмётся Эврика.
← →
Rouse_ © (2013-02-07 18:41) [73]
> Эврика ничего не будет ловить.
> потому что ты уже всё поймал и обработал.
Зависит от настроек Эврики. При желании она ловит все что угодно.
← →
Pit (2013-02-07 19:01) [74]
> Так что убирай свои try/except, и тогда за работу возьмётся
> Эврика.
ты настройки еврики то видел? Там четко можно задать отлавливать "Handled" исключения или "Unhandled" или все подряд.
← →
Cobalt © (2013-02-08 09:35) [75]Вот только у меня (Д7)
Опция "Catch handled exceptions" не отлавливает ошибку в
StrToDateTimeDef("99/99/1998", Date)
← →
Rouse_ © (2013-02-08 10:25) [76]
> Cobalt © (08.02.13 09:35) [75]
> Вот только у меня (Д7)
> Опция "Catch handled exceptions" не отлавливает ошибку
> в
А с какого перепуга должен-то?
Не знаю что там в семерке, но в 2010-ой StrToDateTimeDef вызывает TryStrToDateTime где происходит парсинг строки на котором падений быть не должно
← →
Pit (2013-02-08 10:32) [77]
> Опция "Catch handled exceptions" не отлавливает ошибку
> в
> StrToDateTimeDef("99/99/1998", Date)
там еще обычно тип исключения настраивается.
По-умолчанию, еврика отлавливает все необработанные исключения, а также все исключения типа EAccessViolation.
← →
Pit (2013-02-08 10:33) [78]
> Не знаю что там в семерке, но в 2010-ой StrToDateTimeDef
блин, действительно. Все функции оканчивающиеся на "...Def" не вызываеют исключения, в случае ошибки - они возвращаются указанное Default значение.
← →
brother © (2013-02-08 10:36) [79]да ты что???) а мужики то не знают)
← →
Ega23 © (2013-02-08 11:20) [80]
> блин, действительно. Все функции оканчивающиеся на "...Def"
> не вызываеют исключения, в случае ошибки - они возвращаются
> указанное Default значение.
Чё там говоришь, за 2 недели не получится никак? :)))
Страницы: 1 2 вся ветка
Текущий архив: 2013.06.16;
Скачать: CL | DM;
Память: 0.64 MB
Время: 0.007 c