Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Почему скомпилированный проект падает "молча"? / 25 сообщений из 50, страница 1 из 2
05.11.2009, 16:07
    #36292625
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Допустим, возникает ошибка типа "Divide by zero", "Subscript out of range" и т.п. По идее, скомпилированный проект в случае неперехватываемой ошибки выдает соответстующий msgbox, а потом падает. Но мой проект (довольно большой) падает сразу. Иногда на нем юзерконтролы покрываются мелкой сеточкой (так, как они делают в IDE, когда их редактируешь), иногда вылетает сразу, издав, впрочем, звук, назначенный на "восклицательный знак".

Есть идеи, почему так может быть? Больно неудобно ловить баги.
...
Рейтинг: 0 / 0
05.11.2009, 16:31
    #36292727
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Раз сеточка, значит ошибка в контроле, который утаскивает за собой всю прогу. Ошибка в процедуре сабклассинга, поэтому сообщение не выводится.

Jah loves you.
...
Рейтинг: 0 / 0
05.11.2009, 16:34
    #36292742
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Для начала можно сделать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
Public Function WndProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    On Error GoTo errh
    …
errh:
    TBProc = CallWindowProc(lPrevWndProc, hWnd, uMsg, wParam, lParam)
    If Err.Number <>  0  then MsgBox Err.Description
End Function
Jah loves you.
...
Рейтинг: 0 / 0
05.11.2009, 16:34
    #36292746
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
TBProc WndProc конечно.

Jah loves you.
...
Рейтинг: 0 / 0
05.11.2009, 16:41
    #36292776
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Antonariy,

Спасибо. Я тут почитываю вашу переписку с Дмитрий77, ругаетесь словом "сабклассинг", а я еще не врубился что это такое, никак не могу найти время нагуглить....


Соответственно, я не очень понял, куда запихать эту процедуру - к чему ее подключить?
...
Рейтинг: 0 / 0
05.11.2009, 16:56
    #36292823
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
То, чем мы занимались при добавлении скролла, и есть сабклассинг :) То есть установка оконной процедуры.
А то, что я написал выше, это образец ее оформления.

Jah loves you.
...
Рейтинг: 0 / 0
05.11.2009, 16:58
    #36292831
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
А к какому hwnd ее прикручивать? К hwnd всех контролов?
...
Рейтинг: 0 / 0
05.11.2009, 16:58
    #36292838
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
И что вместо многоточия?
...
Рейтинг: 0 / 0
05.11.2009, 17:06
    #36292877
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Все остальное, что находится в процедуре.

Jah loves you.
...
Рейтинг: 0 / 0
05.11.2009, 17:08
    #36292883
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Shocker.ProА к какому hwnd ее прикручивать? К hwnd всех контролов?Кого ее? У вас уже все прикручено, раз уж падает, нужно только добавить указанные строчки в начале процедур и в конце.
...
Рейтинг: 0 / 0
05.11.2009, 17:10
    #36292892
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Не-е-е-е..., чего-то мы друг друга не поняли....

То, что я пишу - никак не связано с прикрученным скроллом, оно было и раньше, когда я не перехватывал оконную процедуру.
...
Рейтинг: 0 / 0
05.11.2009, 17:46
    #36293007
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Ладно. Но все равно виноваты контролы.
Они в одной либе или разных? Если в одной, то лучше разделить на время, можно будет по сеточке локализовать глючный. Или выложите их здесь, если не жалко (вряд ли они представляют интеллектуальную ценность в отрыве от программы), поищу опасные участки. Или на почту.

Jah loves you.
...
Рейтинг: 0 / 0
05.11.2009, 18:10
    #36293085
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Antonariy,

Неееее.... Вопрос стоит совсем не так.

Проект развивается. Иногда модернизация приводит к глюкам в старом коде, иногда высвечивает ранее внесенные глюки, которые не проявлялись. Иногда глюки в новом коде. Это все явление нормальное и понятное. Пользователь делает действия, у него проект падает. Он приходит ко мне и говорит: я сделал такую-то последовательность действий. Я делаю эту же последовательность под IDE, получаю ошибку, нажимаю Debug, вызываю CallStack и решаю проблему.

Но иногда пользователь не может добиться повторяемой ошибки. И ситуацию усугубляет то, что я не могу увидеть не только текст ошибки, но и экран (успела ли загрузиться форма, какой контрол в каком состоянии и т.п.). Вот это ловить очень тяжело, а пользователи - не профессиональные бета-тестеры.


Ситуацию с "молчаливым" падением пока не удалось воспроизвести на отдельной группе проектов. Контрол покрывается сеточкой, ошибка появляется, но проект остается и не падает. То есть в основном проекте я что-то где-то сделал так, что началось такое поведение, например что-то при загрузке. Впрочем, попробую все-таки локализовать методом итераций :)

Может я немножко не тем путем иду... Стандартная обработка ошибок в VB6 сделана неудобно, встроить ее в каждую процедуру автоматически сложно (с учетом того, что местами есть отлов, а в проекте только форм полторы сотни)....
...
Рейтинг: 0 / 0
05.11.2009, 18:28
    #36293120
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
И даже без всяких юзерконтролов.
Кладу на одну из форм кнопку, которая делит на ноль.
Запускаю ехе, жму на кнопку - проект исчезает с характерным звуком
...
Рейтинг: 0 / 0
05.11.2009, 20:06
    #36293271
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Ого. Это в чистом проекте? Переустанавливать студию пробовали?
...
Рейтинг: 0 / 0
05.11.2009, 20:11
    #36293278
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
На чистом ТЕСТОВОМ проекте такого не происходит (соответственно, переустановка студии не причем).

Сейчас как раз занимаюсь тем, что, скопировав свой проект, выкидываю из него части, пытаясь довести до состояние чистого. Пока падает.
...
Рейтинг: 0 / 0
05.11.2009, 20:18
    #36293282
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
У меня пока с WM_(massages) игрался тоже через раз все падало (когда на message неправильно пытался реагировать), если это о том. И на тестовом проекте тоже. И если в в vb6 то вместе со студией. Так что надо аккуратней с этими WM_
...
Рейтинг: 0 / 0
05.11.2009, 21:35
    #36293356
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Ни за что не догадаетесь, Кто виноват!

Смотрите и удивляйтесь.

Однако, теперь очень остро и животрепещуще встает извечный вопрос - Что делать?
...
Рейтинг: 0 / 0
05.11.2009, 21:56
    #36293386
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
У меня IDE останавливается с сообщением division by zero. И не падает.
...
Рейтинг: 0 / 0
05.11.2009, 22:52
    #36293464
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Аналогично. Прога вылетает division by zero, но сам vb6 -нет.
...
Рейтинг: 0 / 0
06.11.2009, 00:03
    #36293573
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
AntonariyУ меня IDE останавливается с сообщением division by zero. И не падает.

Дмитрий77Аналогично. Прога вылетает division by zero, но сам vb6 -нет.

Эта.... ну вы немножко тему забыли

IDE не вылетает, а вы попробуйте ехе-шник собрать.
...
Рейтинг: 0 / 0
06.11.2009, 00:19
    #36293591
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Ну падает хочется ему так, а нафига на 0 делить.
Вот так не падает...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Command1_Click()
Dim a As Integer
On Error GoTo V_Banju
a =  5  /  0 
Exit Sub
V_Banju:
MsgBox "Err #=" & Err.Number & ":" & Err.Description, vbExclamation, "V_bane"
End Sub
C WM_ точно также если падает, без сообщений.

Я в сомнит. не оч. нужных кодах(напр. form_resize) обычно ставлю resume next, ну не выполнится чего-то зато crash-а не будет.
...
Рейтинг: 0 / 0
06.11.2009, 00:38
    #36293608
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Дмитрий77Ну падает хочется ему так, а нафига на 0 делить.

Дмитрий, вы читаете только последнее сообщение в топике? Хорошо, я повторю:

Shocker.ProПроект развивается. Иногда модернизация приводит к глюкам в старом коде, иногда высвечивает ранее внесенные глюки, которые не проявлялись. Иногда глюки в новом коде. Это все явление нормальное и понятное. Пользователь делает действия, у него проект падает. Он приходит ко мне и говорит: я сделал такую-то последовательность действий. Я делаю эту же последовательность под IDE, получаю ошибку, нажимаю Debug, вызываю CallStack и решаю проблему.

...

Стандартная обработка ошибок в VB6 сделана неудобно, встроить ее в каждую процедуру автоматически сложно (с учетом того, что местами есть отлов, а в проекте только форм полторы сотни)....
Еще раз обращаю внимание - в проекте ТЫСЯЧИ процедур. Пройтись по всем и проставить on error нереально, с учетом того, что во многих процедурах есть свой on error. А ошибки могут возникнуть в довольно произвольных местах: может индекс вылететь за пределы массива, может ошибка при работе с базой возникнуть, опять же местами используются асинхронные вычисления, может где-то переполнение случиться, причем при очень специфической комбинации действий - всего не предусмотришь. А в проекте изначально не была заложена идеология - в каждую процедуру, пусть и состоит она из одной строки, класть обработчик ошибок. Поэтому речь сейчас идет не о том, как переписать проект , а как сделать так, чтобы пользователь увидел сообщение об ошибке. Это проблему решит в достаточно большой степени.

А на ноль я делю для того, чтобы вызвать ошибку. Это ТЕСТОВЫЙ проект, если вы не поняли, для демонстрации глюка . И "хочется" не ему, а, видимо, кулбару, так как если кулбар убрать, то все прекрасно работает.

Фух. Надеюсь - объяснил.
...
Рейтинг: 0 / 0
06.11.2009, 00:59
    #36293620
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Пройтись по всем и проставить on error нереальноБолее чем реально, работайте головой, а не руками, как говорил Скрудж Макдак. Открываем файл исходника, считываем текст, находим sub function или property, вставляем on error, находим соответствующий end, вставляем обработчик. Заодно проверяем, нет ли его уже. Примитивный скрипт, делов на полчаса с перекурами.
...
Рейтинг: 0 / 0
06.11.2009, 01:03
    #36293621
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему скомпилированный проект падает "молча"?
Да читал я все, по крайней мере пробежался.
Ничего не сделаете скорее всего.
А даже если пользователь присылает вам картинку на 2 экрана с сообщением "/0"
Вы с ходу поймете что где не так в ваших 1500 функциях не видя места остановки?
Присылают мне напр. "ActiveX component can't create object" или "Automation error" и т.п.
Если соображу, то догадаюсь в чем дело...напр. у него net.framework не установлен... и shell запускающий C-шный екзешник сглючил, кот.в этом framework нуждается, только в msgbox даже системном это не напишется.
Так что разговор не о чем.

Вспомнилось...Была старая прога PCplus (досовская терминалка) , на так начиная с какого-то Pentium она стала ругаться и писать Division by zero при запуске (для примера). И все: отказались от нее в итоге.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Почему скомпилированный проект падает "молча"? / 25 сообщений из 50, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]