| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Редактор VLIDE. Увидеть место где произошла ошибка.

Редактор VLIDE. Увидеть место где произошла ошибка.

Ответ
Поиск в этой теме
Непрочитано 24.06.2013, 02:04 #1
Редактор VLIDE. Увидеть место где произошла ошибка.
Kirill_Ja
 
Мурманск
Регистрация: 28.07.2008
Сообщений: 208

Вылавливаю сейчас ошибку. Она возникает не постоянно, а где-то в 30% случаев.
При этом не возникает когда я пошагово выполняю "сбойную" функцию.

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

И вообще как-то получать место ошибки при выполнении кода не по шагам.
__________________
Мне не нужно сделать за меня. Если я что-то ищу, то пути решения.
Просмотров: 2605
 
Непрочитано 24.06.2013, 05:49
1 | #2
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Простейший способ - вставлять в подозрительных местах вывод сообщений. Например
Код:
[Выделить все]
 (defun ru-msg-debug	(n /)
    (if	*ru_msg_debug*
	(princ (strcat "\nru-msg-debug: >>>> Точка отладки N ** " (itoa n) " <<<< \n"))
    ) 
)
Глобальная *ru_msg_debug* введена для того, чтоы включать режим отладки.
Можно и более изощренно сделать

Код:
[Выделить все]
 (defun ru-msg-print (msg var n)
  ;; печать в режиме отладки сообщения MSG, значения переменной VAR и
  ;; задержкой на N
  ;; секунд
  (if *ru_msg_debug*
    (progn
      (princ "\n** ОТЛАДОЧНОЕ ПРЕРЫВАНИЕ **\n")
      (princ msg)
      (princ "\nПеременная: ")
      (princ var)
      (princ "\nЗначение: ")
      (princ (eval var))
      (princ "\nТип: ")
      (princ (type (eval var)))
      (if n   (ru-time-wait n)   (getstring "\nЖми пробел для продолжения...")) 
      (princ "\n**     ПРОДОЛЖЕНИЕ       **\n")
    ) 
  ) 
  (princ)
)
Это будет "не по шагам" и с выводом нужной информации.
"Больше информации" можно получать "отправляя" в AutoCAD имена переменных - будет возвращаться из значение. Ну и штатные средства.
ShaggyDoc вне форума  
 
Непрочитано 24.06.2013, 11:08
#3
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Есть еще трассировка, которая позволяет отследить путь возникновения ошибки от функции самого верхнего уровня. Если знаешь, где возникает ошибка ("причина последнего останова"), можно понаставить ловушек в этом месте, пройти его пошагово, проверяя все значения переменных. Ну и т.д. и т.п.
Do$ вне форума  
 
Непрочитано 24.06.2013, 21:13
#4
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


;;;Tony Tanzillo said...
;;;
;;;
;;;There's no need to use the Visual LISP IDE to find errors. I haven't used the Visual LISP IDE for close to 10 years.
;;;
;;;This will show the source of the error:

(defun *error* (msg)
(vl-bt)
)

;;;Example:
;;;
;;;Command:
(defun *error* (s) (vl-bt))
;*ERROR*

;Command:
(defun C:BUGGY()
(setq a (getint "\nEnter a number: "))
(setq b (/ a 0))
(princ))
(C:BUGGY)
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 26.06.2013, 11:06
#5
Kirill_Ja


 
Регистрация: 28.07.2008
Мурманск
Сообщений: 208
<phrase 1=


Отладочное сообщение - то, что надо. Немного переписал под себя и решение легко нашлось.
Спасибо.
__________________
Мне не нужно сделать за меня. Если я что-то ищу, то пути решения.
Kirill_Ja вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Редактор VLIDE. Увидеть место где произошла ошибка.

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите узнать номер строки в котрой произошла ошибка в программе на VBA МишаИнженер Программирование 3 27.05.2012 23:27
Несоответствие результатов в Лире s.vas Лира / Лира-САПР 19 11.11.2009 07:31
Стройки встали что делать проектировщикам dextron3 Организация проектирования и оформление документации 1033 07.12.2008 12:09
Неужели это правда, что мы стали жить лучше? dermoon Разное 224 19.08.2007 14:10
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47