Как да поставите манипулатори на грешки във всички vb функции

Имаме множество vb проекти. Искаме да поставим манипулатори на грешки във всички функции, а манипулаторите на грешки трябва да записват във файл. Има ли налични инструменти - разгледахме codesmart и vbwatch.


person Community    schedule 21.01.2009    source източник


Отговори (3)


Ето една безплатна програма:
http://wareseeker.com/Software-Development/automatic-error-handling-pro-1.1.0.zip/238557

и ето малко изходен код, за да го направите сами:
http://www.nigelrivett.net/VB/VBAddErrorHandling.html

person gkrogers    schedule 21.01.2009

MZ-Tools, който е безплатен и много лесен за инсталиране, често се препоръчва:

Поддържани инструменти за разработка на Microsoft

  • Visual Studio 2008 (с изключение на Express изданията)
  • Visual Studio 2005 (с изключение на Express изданията)
  • Visual Studio .NET 2003
  • Visual Studio .NET 2002
  • Visual Basic 6.0
  • Visual Basic 5.0
  • VBA редактор (Office 2000-2007 или други)

Поддържани езици за програмиране

  • Visual C#
  • Visual Basic .NET
  • Visual C++ (частична поддръжка, повечето функции)
  • Visual J#
  • Visual Basic 6.0 и 5.0
  • Visual Basic за приложения (VBA)
person Fionnuala    schedule 21.01.2009
comment
Всеки, който програмира в vb6, определено трябва да използва тази добавка и не само заради нейната полезност при добавяне на код и номера на редове за обработка на грешки - person kjack; 22.01.2009
comment
IMHO VB6 не се инсталира, докато не инсталирате MZTools. Също така е безплатно (Remou може ли да редактирате отговора си и да споменете това) - person MarkJ; 23.01.2009

Уверете се, че тествате ефективността, преди да го поставите във всички процедури. Нашето решение за обработка на грешки (VBRig) значително повлия на математическите изчисления и преначертанията на екрана в нашето CAD/CAM приложение. Не беше зле написано, но добавянето на извършване на стотици време за регистриране добави.

Превключихме към използване на обработка на грешки във всички рутинни събития и избрахме друга област. Въпреки че не е идеален от гледна точка на дизайна, той върна производителността до това, което трябваше да бъде.

person RS Conley    schedule 21.01.2009
comment
Бих си помислил, че режийните разходи ще бъдат незначителни, освен ако вашият код всъщност не генерира много грешки. Което според мен само по себе си би причинило проблеми с производителността. Вероятно сте регистрирали само ако наистина се появят грешки? - person MarkJ; 23.01.2009
comment
Моите CAD/CAM приложения правят 3D изчисления за разгъване на форми, както и динамично чертане на екрана. Малката част от допълнителните разходи на процедурите за регистриране във Visual BASIC 6 добавя достатъчно, за да забави видимо процеса. - person RS Conley; 26.01.2009
comment
Подобно на много неща в програмирането, това не е абсолютно. Трябва да използвате най-добрата си преценка. - person RS Conley; 26.01.2009
comment
Във Visual Basic 6 трябва ръчно да регистрирате всяка процедура, ако искате проследяване на стека. - person RS Conley; 26.01.2009
comment
Поставяме манипулатор на грешки във всяка рутина, който улавя грешката и след това я повдига отново, като добавя името на рутината към подробностите за грешката. Последната рутина (манипулатор на събития или подглавна) всъщност регистрира грешката. Резултат: проследяване на стека, създадено само когато възникнат грешки. В противен случай няма наказание за време на изпълнение. - person MarkJ; 26.01.2009
comment
Като алтернатива (ако сте хардкор) изглежда, че можете да създадете следи на стека във VB6 без наказание по време на изпълнение като това (не съм го пробвал): codeproject.com/KB/exception/RealTimeDebugger.aspx - person MarkJ; 26.01.2009
comment
Сложихме манипулатор на грешки ... това е просто елегантно. Благодаря за бакшиша. - person RS Conley; 26.01.2009
comment
@MarkJ: бихте ли приели, че повечето VB6 приложения отиват само на 1 или 2 нива дълбоко в стека на повикванията, следователно да имате манипулатори на грешки само в събитията обикновено е достатъчно, за да разберете къде е проблемът? - person CJ7; 02.05.2012
comment
@CraigJ Не е необходимо да се прави подобно обобщение. Очевидно моите познания са най-приложими към VB6 приложенията, върху които работя сам. Те достигат много повече от 1 или 2 нива на дълбочина. Вие знаете най-добре за приложенията, с които работите. Може да не е подходящо за тези. Използвайте собствената си преценка. - person MarkJ; 02.05.2012