Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Работа с Intel Fortran через Visual Studio 2003 и не только

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

Открыть новую тему     Написать ответ в эту тему

Dust



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KChernov
Так всетаки ругалась Значит была диагностика...
Моя среда Linux+MC+ifort. Все что мне нужно для работы. Если охота красивостей - вывод в HTML.

Всего записей: 460 | Зарегистр. 01-03-2002 | Отправлено: 00:41 24-05-2006
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dust

Цитата:
Значит была диагностика...

И что бы ты с такой диагностикой делал?
Я не говорил, что ее не было, я говорил, что она неадекватная.
Там даже номеров строк никаких не было
Я быстро догадался только потому, что уже когда-то на такое натыкался - а так хз, сколько бы я искал, где же ошибка
 
Что, например, мешало компилятору указать номер строки?
 
Опять же в документации я нашел только рантайм ошибки - ошибки компилятора так и не нашел
 

Цитата:
Моя среда Linux+MC+ifort

MC как редактор?

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 11:26 24-05-2006
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 Что, например, мешало компилятору указать номер строки?  

Например отсутствие некоторых ключей при компиляции, я обычно с IFC для дебага пользуюсь (-traceback -g -inline_debug_info) - всё показывает, за исключений совсем плохих случаев аля Segmentation fault.

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 22:49 25-05-2006
dima333a



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FuzzyLogic
 

Цитата:
Например отсутствие некоторых ключей при компиляции

 
Да, по дефолту компиляторы несовсем подходяший для дебага код используют. В CVF например  опция traceback работает только если предотвратить incremental linking.

Всего записей: 798 | Зарегистр. 27-02-2004 | Отправлено: 23:10 25-05-2006
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Почему-то не получается теперь воспроизвести эту ошибку
Спасибо за ключи - при случае попробую
 
Еще такой вопрос: в режиме отладки нельзя получить доступ к окну программы - можно это как-то обойти?
А то иногда нужно посмотреть на то, что она успела навыводить.
Тип проекта - квиквин (с консолью таких проблем нет).

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 16:09 29-05-2006 | Исправлено: KChernov, 16:10 29-05-2006
dersu



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
в общем погонял интела на своих задачках,
под 2005 студией, 64-битный релиз процентов на 20 молотит быстрее, чем 32-битный аналог
 
и все таки ищу ИДЕ полегче чем студия МС

Всего записей: 118 | Зарегистр. 22-02-2004 | Отправлено: 14:25 02-06-2006
VitaliM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет! Я вообще-то сейчас больше Delphi`ст, но с большим стажем работы на фортране.
Я и сейчас плотно рабтаю с фортраном, но несколько специфично. Суть проблемы: проект состоит из оболочки, написаной на Дельфи, и некоторого числа ДЛЛ, написаных на фортране (Compaq VF6.6). Может кто знает как получить трассировку исключительной ситуации в ДЛЛ через TRACEBACKQQ, или может подскажите как получить адрес И.С. через GETEXCEPTIONPTRQQ. У меня функция  GETEXCEPTIONPTRQQ возвращает всегда  0. Переписывать все на дельфи не предлагайте, я фортран люблю, а мои старшие товарищи (участники проекта) по другому жить просто не могут.

Всего записей: 2184 | Зарегистр. 12-01-2005 | Отправлено: 12:01 12-06-2006 | Исправлено: VitaliM, 13:04 12-06-2006
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaliM
Привет!
Сам такого не пробовал, но вот напрашивающееся решение - почему бы не приделать к программе лог и писать туда ошибки?
Хотя конечно же нехорошо, что стандартного функционала для этого не хватает

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 12:45 13-06-2006
VitaliM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KChernov
Ну наконец-то получил хоть какой-то ответ! Спасибо.
 
Лог для программы работать не будет, я имею ввиду с описанием типа и места ошибки. Когда из дельфи вызывается подпрограмма фортрана из ДЛЛ, то если в дельфи не защищать этот вызов, то исключение в фортран - подпрограмме убивает приложени полностью. Никакой лог в фал не запишешь. При защищенном вызове при исключении управление передается в обработчик исключения дельфи, а он уже не может достать никакой информации о том где и какя ошибка в фортран-подпрограмме произошла. Если исключение связано с ошибкой ОС (ну например доступ к памяти), то хоть адрес исключения есть, а с математическими ошибками только тип ошибки и больше ничего.
 
Как написано в хелпе, в ДЛЛ не инициализировано окружение фортрана и в том числе обработка ошибок. Точнее его просто нет в коде, который вллючается в ДЛЛ. Есть мысль, может если на языке С написать обертку для вызываемй подпрограмы на фортране и вызов заключить в блок __try ... __except, то может код обработчика ошибок будет включен в ДЛЛ и тогда получится обрабатывать исключения внутри ДЛЛ.

Всего записей: 2184 | Зарегистр. 12-01-2005 | Отправлено: 14:36 13-06-2006
dima333a



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaliM
 

Цитата:
Может кто знает как получить трассировку исключительной ситуации в ДЛЛ через TRACEBACKQQ, или может подскажите как получить адрес И.С. через GETEXCEPTIONPTRQQ.

 
Я dll никогда не занимался. Но под "исключительной ситуации в ДЛЛ" понимаю что сам код в dll иногда неработает? Если так то все алгоритмы dll мона оттестить в виде подпрограммы... Sorry если слишком по ламерски

Всего записей: 798 | Зарегистр. 27-02-2004 | Отправлено: 07:20 14-06-2006
VitaliM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dima333a
Программа в целом используется в учебных целях. Свои подпрограммы на фортране пишут студенты в течении лаб. занятий и через соответствующий интерфейс они вызываются из оболочки. Возможности отладить подпрограмму отдельно нету. А студенту надо по возможности ткнуть на номер строки, где произошла ошибка. Любая полноценная программа на фортране выдаст трассировку в случае ошибки, а ДЛЛ не хочет.
Я надеюсь, теперь суть проблемы понята.

Всего записей: 2184 | Зарегистр. 12-01-2005 | Отправлено: 09:01 14-06-2006
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaliM
А если компилировать dll с включением отладочной информации? (хотя ни разу не пробовал - мб так и нельзя - но если можно - это может решить проблему)

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 17:12 14-06-2006
dima333a



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaliM
Я надеюсь, теперь суть проблемы понята.
 
А самим студентиками написать внутри кода dll что то что бы рапортовало о выполнении определенных ключевых моментов нельзя? Не обязателно ведь знать строку, хороше бы хотябы ориентировочно какая часть кода ведет к ошибке.  

Всего записей: 798 | Зарегистр. 27-02-2004 | Отправлено: 17:31 14-06-2006
eriik



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
и все таки ищу ИДЕ полегче чем студия МС

Ну, давайте меряться, кто на что горазд. Если кто предложит что-нибудь лучше чем  

то готов менять свои привычки. (окно по ссылке растянуто с ALT-F9) Все пути сведены к минимальным в c:\IF\{BIN|DOC|LIB|INCLUDE|IDB|MKL|IMSL}, ifortvars.bat через шорткат, сборка через пользовательские makefile с опцией выбора архитектуры и оптимизаций. Отладка в фаровской панели.

Всего записей: 453 | Зарегистр. 09-01-2003 | Отправлено: 19:07 14-06-2006 | Исправлено: eriik, 19:22 14-06-2006
VitaliM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KChernov

Цитата:
если компилировать dll с включением отладочной информации

можно, конечно, только обрабатывать эту отладочную информацию некому. В ДЛЛ нет фортран-кода, который ловит ошибки и работает с отладочной информацией.
 
dima333a

Цитата:
самим студентиками написать внутри кода dll что то что  

Теоретически, так и надо было бы, но ведь студенты не программисты а прикладники и фортран знают только на уровне записи операторов присваивания. Меня поиск ошибки всегда приводит к одной и той же мыли "как они меня достали, сам бы написал быстрее и правильно, чем копаться в их программах", но учебный процесс требует, чтобы студенты делали все сами. Им в задании дается, например, написать подпрограмму расчета траектории полет ракеты и вывести параметры траектории с шагом 1 сек. в файл. Причем такие задания они получаю на 3 курсе, а фортран проходят во 2 и 3 семестре. Дальше я думаю продолжать не стоит, с какими знаниями он пишут подпрограммы.

Всего записей: 2184 | Зарегистр. 12-01-2005 | Отправлено: 19:21 14-06-2006 | Исправлено: VitaliM, 20:09 14-06-2006
Griefin

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
eriik
Предложу. Есть редакторы Vim и Emacs (предпочитаю первый), безгранично программируемые, настраиваемые и с большим набором возможностей. По крайней мере, там есть аналог окна Output в Visual Studio (для отслеживания ошибок компиляции) и folding (сворачивание участков кода). Единственный, но огромный минус -- их придется долго осваивать.

Всего записей: 759 | Зарегистр. 19-07-2003 | Отправлено: 19:57 14-06-2006
dima333a



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaliM
 

Цитата:
Теоретически, так и надо было бы, но ведь студенты не программисты а прикладники и фортран знают только на уровне записи операторов присваивания.  

 
Ну...да...как то все сложно у вас. Студент- это не безгмозлый ученик в школе и уж FORTRAN можно немного подучить. Я выучил FORTRAN пользуясь программой моего научного руководителя. Просто так, без особой необходимости. Уже потом, мой сл. руководитель этому был несказанно рад.
На самом деле можно разработать такую часть кода-вставку которая будет документировать ступени выполнения решения. С небольшой аннотацией-хелпом на одной страничеке студентики будут просто вставлять эту вставку с небольшими изменениями каждый раз после завершения одной ступени решения. Т.е. велосипед им придумывать не надо будет.
 
Мой пример ( не для dll, a для обычной программы)
 

Код:
 
( декларирование переменных)
OPEN(unit=15,file='logERR.txt' )
write(15,*) 'Program started'
 
( первая часть вычислений)
write(15,*) 'first part completed'
 
( вторая часть вычислений)
write(15,*) 'second part completed'
 
(blah blah blah)
 
close(15)
end
 

 
 
 
 
 
 

Всего записей: 798 | Зарегистр. 27-02-2004 | Отправлено: 07:21 15-06-2006 | Исправлено: dima333a, 07:23 15-06-2006
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaliM
Не проще ли тогда будет переписать ту часть, которая на дельфи, на фортран?
 

Цитата:
но ведь студенты не программисты а прикладники и фортран знают только на уровне записи операторов присваивания

Вообще-то программирование на прикладном уровне требует, в основном, умения применять инженерный подход.
Так что за год научить их решать задачи на фортране должно быть вполне реально.
 

Цитата:
По крайней мере, там есть аналог окна Output в Visual Studio

Это есть почти в любом серьезном редакторе (в том же ультраедите есть).
 
 
Еще какие возможны варианты:
1. Есть система для юниттестинга для фортрана - как раз для проверки учебных работ она может подойти
2. Опять же, почему все сделано через длл? Например, вариант взаимодействия через консоль или фиды (это когда есть папка, куда одна прога складывает результаты, а другая прога это отслеживает и обрабатывает их дальше).
В обоих случая достаточно консолького исполнения программы - чтобы она задание получала из файла и результат тоже клала в файл.
Тогда останется из дельфовой проги запустить эту программу как консольную с перенаправлением вывода ошибок в файл, а потом проанализировать этот файл.
 
Чтобы студентам было проще, им можно давать готовый шаблон проги на фортране, где уже есть чтение и запись в файл.

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 14:22 15-06-2006
VitaliM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KChernov

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

 
Почти так все и сделано (и с отслеживанием ошибок в консольном варианте все понятно), но  такой метод взаимодействия не позволяет более плотно работать оболочке и студенческой программе. Хотелось бы динамическое отражение результатов расчета (и не только в текстовом виде, но и в графическом). Сделать все (оболочку) на фортране не получится, т.к. это сетевая разработка с базой данных (задания, студенты, препы и т.д.) на сервере и клиентским рабочим местом для студентов со своей IDE для работы с фортраном (фортран вызывается только как консольный компилятор, но имитация среды CVF достаточно полная).
 
Ладно, спасибо всем!
 
Буду пытаться все реализовать через межпрограммное взаимодействие.

Всего записей: 2184 | Зарегистр. 12-01-2005 | Отправлено: 14:49 15-06-2006
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaliM

Цитата:
Хотелось бы динамическое отражение результатов расчета (и не только в текстовом виде, но и в графическом)

А какие проблемы сделать это в таком варианте?
Никто же не заставляет выводить именно текстовые файлы - подгружаешь его и рисуешь на его основе что надо.

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 16:00 15-06-2006
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Работа с Intel Fortran через Visual Studio 2003 и не только


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru