Ресурсы Unigraphics: 
            Отладка пользовательских программ и шаблонов.


Здесь я уделю не большое внимание отладке пользовательских программ и шаблонов.

О том как производить отладку DLL и Grip под Юниграфиком - прекрасно описано в Справке.
Хотя каждый программист обязательно старается написать свой класс для вывода логов. Или замутить, что-нибудь свое )))

Вот, примерно как тут:

 Программа для тестирования и ведения логов.  UG_Test.zip
 Программа написанная студентами.
 Кто-то дал им задание на разработку кодов\класса для тестирования.  Параллельно они замутили  для ведения\вывода Лог-файлов.
 Мне очень понравилась. Но использовать я её не буду. :):):):), ни в каком виде.
 

Я при разработке\отладке программ использую 2 - а механизма:

  1. Это усиленное использование конструкций-функций
  •  
if ( 0 != errorCode )
{
    /* Retrieve the associated error message */
   char message[133];
   UF_get_fail_message( errorCode, message );
   /* Print out the message */
   UF_UI_set_status( message );
   ......
}
  •  
str[0]='\0'; sprintf (str,"Исключение в обработке диалога\n %s \n программа прервана..", actions->styler_file);
uc1601 ( str, TRUE );
  •  
str[0]='\0'; sprintf (str," Невозможно выделить память, \n  Ошибка выполнения..", .........);
UF_print_syslog( str, FALSE );
  •  
UF_UI_open_listing_window();
  UF_OPER_ask_name_from_tag(prg, prog_name);
........
str[0]='\0'; sprintf(str,"\n Oper = %-30s | t=%d st=%d ",prog_name, type, subtype );
UF_UI_write_listing_window(str);

 2.  Однажды при ознакомлении исходников из фирмы я натолкнулся на файлы с названиями :
         make_window_for_printf.c     make_window_for_printf_on_wnt.cpp
 в них говорилось, примерно следующее:

Вольный мой перевод с англицкого:  Вывод с помощью C-функции "printf" больше не будет показываться в окне, начиная UG V16.0.
 V16.0 UG является приложением Windows и больше не имеет консольного вывода и как следствие этого вывод "printf" виден не буден. 
Для решения этой проблемы, постройте библиотеку используя ниже указанный код. Перенесите полученную .dll в  "startup" or "udo" поддиректории  папки перечисленных в
%UGII_CUSTOM_DIRECTORY_FILE%.
Эта программа будет создавать окно каждый раз при запуске UG. В этом окне Вы можете смотреть вывод  stdout.
For more information on the "startup" or "udo" subdirectories or the UGII_CUSTOM_DIRECTORY_FILE environment variable, consult the UG/Open Menuscript documentation.

я задумался и отмахнулся. Через некоторое время в документации по UG снова натолкнулся на текст выше. Задумался. И тут меня осенило. Блин.
 Вы вообще когда-нибудь задумывались как создатели UG  тестируют шаблоны, классы, ugpost_base.tcl  ? Обратите внимания как много в этих файлах закомментированных
puts

# puts stdout " OPENED FRESH MAIN $warning_file_name ; CHANNEL $warn_file"
# puts stdout " GENERATING : $warning_file_name"
...
puts " ========================================================"
puts " procedure DBC_execute_query_for_count for machine tool"
puts " query string -> $dbc_query"
.....

Учитывая что у меня была своя среда для создания и отладки программ и постпроцессоров :
   я сделал проект: printf_for_windows.zip    
   Для отладки программ вывод сообщений printf|cout|puts на консоль.
Полученную dll скопировал в папку  startup  и теперь при запуске UG у меня появлялось черное окно - а-ля cmd . В котором выводилась любая информация  выводимая функция printf|cout|puts. Это окно нельзя закрывать, иначе Окно Юга тоже закроется. :):)

Теперь при создании пользовательских программ - для вывода отладочной информации , я использовал printf|cout|puts.
Вывод этих сообщений мне будет виден, ведь у меня подключена printf_for_windows.dll . А обычному пользователю эта информация выводиться не будет.
Также, этим способом можно было отлаживать свои изменения в шаблонах и классах.


Copyright © 2001—2009 че

Hosted by uCoz