Есть программа, на моём компьютере запускается нормально. Приносишь на другой — access violation
Как можно узнать где именно вылетает с ошибкой? В идеале в какой строке в исходнике и как вообще лювят
глюки в таких случаях?
Здравствуйте, Аноним, Вы писали:
А>Есть программа, на моём компьютере запускается нормально. Приносишь на другой — access violation А>Как можно узнать где именно вылетает с ошибкой? В идеале в какой строке в исходнике и как вообще лювят А>глюки в таких случаях?
А>Пишу на делфи..
On Fri, 08 Sep 2006 15:54:39 +0930, Аноним <0@users.rsdn.ru> wrote: > Есть программа, на моём компьютере запускается нормально. Приносишь на > другой — access violation > Как можно узнать где именно вылетает с ошибкой? В идеале в какой строке > в исходнике и как вообще лювят > глюки в таких случаях? > Пишу на делфи..
Поздравляю... AV — одна из самых сложно находимых ошибок. Например ты
память вовредил где-нибудь, а через N времени это аукнулось в другом конце
программы. Для начала можно попробовать это http://www.madshi.net/madExceptDescription.htm
Posted via RSDN NNTP Server 2.0
Re[2]: Выловить глюк
От:
Аноним
Дата:
08.09.06 06:54
Оценка:
Здравствуйте, deadlight, Вы писали:
D>Например встроить логи..
Хм.. А как же их сделать — каждое место, где работаю с указателем обернуть в try/except, и записть в лог
"Ошибка № X!"? Так захекаться можно Или есть способ узнать в обработчике строку в исходнике?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, deadlight, Вы писали:
D>>Например встроить логи.. А> Хм.. А как же их сделать — каждое место, где работаю с указателем обернуть в try/except, и записть в лог А> "Ошибка № X!"? Так захекаться можно Или есть способ узнать в обработчике строку в исходнике?
Вставь кучу Assert`ов
И добавь вот модуль AssertionHandlerU
Думаю сам разберешься что он делает
Здравствуйте, <Аноним>, Вы писали:
А>Есть программа, на моём компьютере запускается нормально. Приносишь на другой — access violation А>Как можно узнать где именно вылетает с ошибкой? В идеале в какой строке в исходнике и как вообще лювят А>глюки в таких случаях?
А>Пишу на делфи..
Как вариант — отсутствие нужных фалов,пакетов.
Например, прога работает с БД через BDE, а на втором компе BDE нету...
У меня били глюки, когда bpl файлов не хватало, а прога вылетала с AV.
Решал с помощью filemon
Здравствуйте, Аноним, Вы писали:
А>Есть программа, на моём компьютере запускается нормально. Приносишь на другой — access violation А>Как можно узнать где именно вылетает с ошибкой? В идеале в какой строке в исходнике и как вообще лювят А>глюки в таких случаях?
А>Пишу на делфи..
Воспользоваться Remote Debuger'ом, который вместе в делфями поставляется.
Как улитка с параличем мчится мысль неудержимо, центр речи возбуждая
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, deadlight, Вы писали:
D>>Например встроить логи.. А> Хм.. А как же их сделать — каждое место, где работаю с указателем обернуть в try/except, и записть в лог А> "Ошибка № X!"? Так захекаться можно Или есть способ узнать в обработчике строку в исходнике?
Зачем каждое место? Сначала имеет смысл разделить код на крупные операции и в лог писать что-то типа:
<дата, время> делаю крупное действие 1 (например, читаю конфигурацию)
<дата, время> OK
...
и т.д.
локализуешь место, а дальше его уже изучай внимательно, глянь под отладчиком на тачке где работает, детализируй логи.
Здравствуйте, Аноним, Вы писали:
А>Есть программа, на моём компьютере запускается нормально. Приносишь на другой — access violation
Была такая история, но просто так не скажешь. Можно лишь попробовать сориентировать. На твоем компе есть что то, что используется в момент запуска программы. У меня вот к базе подключалась на которой я разрабатывал. На другом компе ее соответственно не было. Может какие либо модули в секции initialization могут что то загружать. Но с этим проблемы чаще на разных операционках. Например с ХР на 98 может глючить. А>Как можно узнать где именно вылетает с ошибкой? В идеале в какой строке в исходнике и как вообще лювят А>глюки в таких случаях?
Ну как ловят Либо лог веди и на каждой строке что нить пиши в файл лога. Тогда узнаешь где вылетела прога. Или поставль Делфи и запусти из под дебагера. Я так и делал. НО совет. Используй виртуальную машину. Например VMWare. Очень полезная штука. Постарайся на ней воспроизвести конфигурацию клиента и ничего лишнего. Или просто чистую машину настрой. Если ошибка повториться, то тебе повезло. Можно работать и ловить ее.
Здравствуйте, aswSoft, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
А>>Есть программа, на моём компьютере запускается нормально. Приносишь на другой — access violation S>Была такая история, но просто так не скажешь. Можно лишь попробовать сориентировать. На твоем компе есть что то, что используется в момент запуска программы. У меня вот к базе подключалась на которой я разрабатывал. На другом компе ее соответственно не было. Может какие либо модули в секции initialization могут что то загружать. Но с этим проблемы чаще на разных операционках. Например с ХР на 98 может глючить. А>>Как можно узнать где именно вылетает с ошибкой? В идеале в какой строке в исходнике и как вообще лювят А>>глюки в таких случаях?
S>Ну как ловят Либо лог веди и на каждой строке что нить пиши в файл лога. Тогда узнаешь где вылетела прога. Или поставль Делфи и запусти из под дебагера. Я так и делал. НО совет. Используй виртуальную машину. Например VMWare. Очень полезная штука. Постарайся на ней воспроизвести конфигурацию клиента и ничего лишнего. Или просто чистую машину настрой. Если ошибка повториться, то тебе повезло. Можно работать и ловить ее.
S>Удачи!
Да нашел он багу, нашел
madExcept и JclDebug рулят