Monodevelop & отладка (Кто нибуть работал с отладчиком в monodevelop ?)

Модератор: Модераторы разделов

lunuxsoid
Сообщения: 7
ОС: SuSE

Monodevelop & отладка

Сообщение lunuxsoid »

Всем доброго времени суток ! Есть необходимость освоить mono, начинаем выпуск новой embedded железки
под управлением линуха, прикладное ПО решили писать на C#, с целью унификаци работы с прикладным
операторским ПО, фунциклирующим под Виндами. Вот на меня сей тяжкий труд и пал :-).
Собственно вопрос: долго не мог понять где в Monodevelop отладчик, уже начал подумывать что ента
среда для тех кто пишет исключительно правильные программы :-). Потом выяснил что он находился
в стадии разработки и недавно стал доступен. Установил я SuSE 10.2 (не лукавя взял диск с LFX),
там mono идет уже с модулем отладчика, достаточно соответствуюющюю галочку поставить в соответствующем
месте. После установки monodevelop выяснилось что хоть в системе и стоит и отладчик и monodevelop и
отладчик, но живут они каждый своей половой жизнью ! Немного порывшись вроде нашел инфу что по умолчанию
monodevelop в rpm пакетах собран без поддержки отладчика, посему его как то надо прикрутить к студии. Увы
писать проги без ошибок я так и не научился, посему буду очень благодарен за дельную подсказку на тему как заполучить
отладчик в monodevelop.
Так же хотелосьбы услышать мнение народа по mono в целом, выполнял кто нить что то коммерческое на "дрозжах"
mono ? Насколько стабильно работает, интерисует именно долговременная стабильность ПО во времени. Мы занимаемся
промышленным оборудованием, железо фактически должно работать 24 часа семь/дней ну и т.д. поэтому требование
к надежности высокие.
Спасибо сказали:
i18n
Сообщения: 192

Re: Monodevelop & отладка

Сообщение i18n »

По поводу Monodevelop и отладчика на данный момент ситуация не очень радостная. В принципе, в достаточно старых версиях mono, monodebugger и monodevelop все это вместе работало, но потом API отладчика сильно изменился и даже в последнем релизе Monodevelop модуль поддержки отладчика отказывается работать уже на этапе configure при сборке. Вроде как проскакивало упоминание, что в этом году на Google Summer of Code этот проект может быть реализуют наконец - http://tirania.org/blog/archive/2007/Apr-12.html . Если очень хочется быть в курсе последних изменений в Monodevelop, то можно посмотреть версию из SVN, в принципе, не должно быть проблем с ее сборкой и использованием. Если очень нужен отладчик, то всегда можно использовать консольный mdb, он очень похож на gdb. По собственному опыту, этот отладчик иногда может глючить, но в принципе обновление его до SVN версии большую часть проблем устранило, хотя возможно это просто у меня что-то криво установлено/настроено/собрано.
Насчтет железок с mono - буквально недавно появился плеер с использованием mono:
http://tirania.org/blog/archive/2007/Apr-10.html
http://tirania.org/blog/archive/2007/Apr-09.html
http://www.mono-project.com/news/archive/2007/Apr-09.html
Насчет долговременной стабильности - ну вот в той же SuSE 10.2 есть Beagle, F-Spot, Banshee - они используют mono, соответственно можно оценить стабильность хотя бы на платформе x86.
Еще есть такой проект - mono на Nokia 770, N800 - http://www.maemo.org/maemowiki/mono , http://www.mfconsulting.com/tutorial/nokia...b4Nokia770.html, http://www.mono-project.com/Downloads и т.д.
IMHO, для жесткого реального времени, а тем более для управления чем-нибудь вроде ВВЭР-1000 mono все же не стоит использовать, не для того оно предназначено, а для конкретного случая пожалуй определенно можно сказать только проверив на опыте.
И еще мне почему-то кажется, что будет много радости, если embedded платформа не x86, а например, ARM, и для нее понадобиться собирать mono с помощью кросс-компилятора.
Спасибо сказали:
lunuxsoid
Сообщения: 7
ОС: SuSE

Re: Monodevelop & отладка

Сообщение lunuxsoid »

i18n писал(а):
12.04.2007 16:21
По поводу Monodevelop и отладчика на данный момент ситуация не очень радостная. В принципе, в достаточно старых версиях mono, monodebugger и monodevelop все это вместе работало, но потом API отладчика сильно изменился и даже в последнем релизе Monodevelop модуль поддержки отладчика отказывается работать уже на этапе configure при сборке. Вроде как проскакивало упоминание, что в этом году на Google Summer of Code этот проект может быть реализуют наконец - http://tirania.org/blog/archive/2007/Apr-12.html . Если очень хочется быть в курсе последних изменений в Monodevelop, то можно посмотреть версию из SVN, в принципе, не должно быть проблем с ее сборкой и использованием. Если очень нужен отладчик, то всегда можно использовать консольный mdb, он очень похож на gdb. По собственному опыту, этот отладчик иногда может глючить, но в принципе обновление его до SVN версии большую часть проблем устранило, хотя возможно это просто у меня что-то криво установлено/настроено/собрано.
Насчтет железок с mono - буквально недавно появился плеер с использованием mono:
http://tirania.org/blog/archive/2007/Apr-10.html
http://tirania.org/blog/archive/2007/Apr-09.html
http://www.mono-project.com/news/archive/2007/Apr-09.html
Насчет долговременной стабильности - ну вот в той же SuSE 10.2 есть Beagle, F-Spot, Banshee - они используют mono, соответственно можно оценить стабильность хотя бы на платформе x86.
Еще есть такой проект - mono на Nokia 770, N800 - http://www.maemo.org/maemowiki/mono , http://www.mfconsulting.com/tutorial/nokia...b4Nokia770.html, http://www.mono-project.com/Downloads и т.д.
IMHO, для жесткого реального времени, а тем более для управления чем-нибудь вроде ВВЭР-1000 mono все же не стоит использовать, не для того оно предназначено, а для конкретного случая пожалуй определенно можно сказать только проверив на опыте.
И еще мне почему-то кажется, что будет много радости, если embedded платформа не x86, а например, ARM, и для нее понадобиться собирать mono с помощью кросс-компилятора.


Если дело обстоит так то и вравду нерадостно, дело в том, что ПО уже точно будет распределенным и многопроцесным такие вещи и с отладчиком порой непросто отладить а без него и вовсе шаманство :-(. Что касаеться использования таких технологий как .NET, Java в системах реального времени где отказа оборудования может привести к серьезным убыткам и тем более к травмам/жертвам обслуживающего персонала (имею небольшой опыт разработки такого оборудования для АСУ ТП), то по моему это просто от незнания/недопонимания можно применять эти технологии там. Это совершенно не их ниша. В нашем оборудование ПО на mono должно будет заниматься множественной обработкой данных, по большому счету это embedded сервер, но свою работу должен делать честно.
Возврщаясь к вопросу отладчика, понимаеш мне вовсе не удалось прикрутить отладчик к monodevelop т.е. не то что бы там ошибки и пр. я просто никак не могу понять какие шаги нужно предпринять что бы он там появился. В rpm он просто не учитываеиться, даже через Tools нет возможности его прикрутить, а через исходники (с того же диска LFX) я просто не понял как это сделать . Был ба признателен если кратко приведешь последовательность действий по интеграции отладчика. Все жехочу попытаться сам прикрутить, не получиться так не получиться, как говориться попытка не пытка :).
Спасибо сказали:
i18n
Сообщения: 192

Re: Monodevelop & отладка

Сообщение i18n »

Скачать и распаковать исходники Monodevelop - http://go-mono.com/sources/monodevelop/mon...p-0.13.1.tar.gz - последний релиз
или svn-версия (та, что на данный момент в разработке) - выполнить в консоли команду svn co svn://svn.myrealbox.com/source/trunk/monodevelop
В каталоге с исходниками в консоли выполнить:
0) для svn-версии ./autogen.sh (для релиза это не нужно)
1) ./configure --help - выводим список опций для configure
собственно интересны из них следующие:
--enable-debugger enable support for the Mono Debugger default=no
--enable-java enable support for Java via ikvm default=no
--enable-boo enable support for boo default=no
--enable-nemerle enable support for Nemerle default=no
--enable-monoextensions enable extensions for Mono development default=yes
--enable-versioncontrol enable version control support default=yes
--enable-subversion enable Subversion support default=no
--enable-monoquery enable MonoQuery support default=yes
--enable-aspnet enable ASP.NET project support default=no
--enable-aspnetedit enable ASP.NET visual designer support default=no
названия говорят сами за себя. Теперь нужно выполнить configure с соответствующими опциями в зависимости от желаемой функциональности, в частности для включения поддержки отладчика нужно использовать --enable-debugger
2) ./configure --enable-debugger
И в итоге получаем ошибку, дальше собирать нет смысла:
configure: error: The debugger add-in is not currently supported due to the API changes being done in the Mono debugger.
3) make - собственно сборка
4) make install - установка, выполнять с правами root.
5) monodevelop - запускаем monodevelop
И все таки отладчик для mono есть, правда он консольный. Вызывается командой mdb.
Mono Debugger
(mdb) file test.exe
Executable file: test.exe.
(mdb) run
Starting program: test.exe
Thread @1 stopped at #0: 0x40d00975 in MyTest.AppTest.Main()+0xb5 at /home/user/
mdev_test/my_test/test/test.cs:10.
10 Console.WriteLine("Test started");
(mdb) step
Test started
Thread @1 stopped at #0: 0x40d00991 in MyTest.AppTest.Main()+0xd1 at /home/user/
mdev_test/my_test/test/test.cs:13.
13 int Debug=0;
(mdb) break test.cs:15
Breakpoint 4 at MyTest.AppTest.Main():15
(mdb) continue
Thread @1 hit breakpoint 4 at #0: 0x40d009b0 in MyTest.AppTest.Main()+0xf0 at /h
ome/user/mdev_test/my_test/test/test.cs:15.
15 String text="test";
(mdb) show locals
text = (System.String) null
str = (System.String) "LINUX"
Debug = (System.Int32) 0
(mdb) print str
(System.String) "LINUX"
(mdb)kill
Thread @1 exited normally.
Process #1 exited.
Target exited.
(mdb) help
List of families of commands:

aliases -- Aliases of other commands
running -- Running the program
breakpoints -- Making program stops at certain points
catchpoints -- Dealing with exceptions
threads -- Dealing with multiple threads
stack -- Examining the stack
files -- Specifying and examining files
data -- Examining data
internal -- Maintenance commands
obscure -- Obscure features
support -- Support facilities

Type "help" followed by a class name for a list of commands in that family.
Type "help" followed by a command name for full documentation.

(mdb) quit
В общем очень похоже на gdb, не так удобно конечно как visual studio, но вполне можно использовать. Правда в последних версиях мне с ним не очень везло, он постоянно глючил, более менее прилично стала работать только версия из svn, но к ней и mono тоже нужен самый свежий и соответственно никаких гарантий по поводу безглючности, хотя старые версии отладчика были достаточно стабильные и безглючные. Вообще с svn-версией не стоит связываться без крайней необходимости, потому что можно огрести кучу глюков, а вот релизы достаточно стабильные и безглючные. Хотя очень может быть, что это связано с тем что у меня это все криво установлено, и при нормальной установке все будет нормально работать.
Спасибо сказали: