Автор |
Сообщение |
Сообщение создано: 20. 10. 2011 [16:40]
|
hyper_sonic
Роман Федоров
Создатель темы
Зарегистрирован(а) с: 13.09.2011
Сообщения: 13
|
В свободное время разбираюсь в исходниках.
Мне вот интересно как прикрутить проект к какой-нибудь правильной IDE и как настроить там отладку.
Сейчас сижу в Netbeans, но после запуска вижу только splash screen, гуи не запускаются и Netbean до посинения что там отлаживает. :bang:
Хотя просто запуск с кнопки в панели Netbeans проходит успешно.
|
Сообщение создано: 20. 10. 2011 [17:17]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
Смотря что NetBeans использует для отладки.
Хотя думаю это не имеет значения. Как Вы вообще представляете себе отладку ресурсоёмкого и многопоточного проекта с вычислителями на периодичности порядка 10мс, в реальном времени? Тот же Valgrind просто стопорит систему даже при запуске без вычислений.
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 20. 10. 2011 [17:23]
|
hyper_sonic
Роман Федоров
Создатель темы
Зарегистрирован(а) с: 13.09.2011
Сообщения: 13
|
"roman" wrote:
Смотря что NetBeans использует для отладки.
Хотя думаю это не имеет значения. Как Вы вообще представляете себе отладку ресурсоёмкого и многопоточного проекта с вычислителями на периодичности порядка 10мс, в реальном времени. Тот же Valgrind просто стопорит систему даже при запуске без вычислений.
NetBeans использует GDB 7.3, стандартный отладчик под linux. Все-таки я не представляю себе как писать программный модкль не имея возможности его отладить?
|
Сообщение создано: 20. 10. 2011 [17:29]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"hyper_sonic" wrote:
NetBeans использует GDB 7.3, стандартный отладчик под linux. Все-таки я не представляю себе как писать программный модкль не имея возможности его отладить?
А я представляю - писать нужно правильно!
И OpenSCADA написана без использования специализированных дебагеров и IDE всяких. Разве что ValGrind иногда запускается для отлова и изучения потенциальных утечек памяти и других проблем при работе с памятью, чего обычные дебагеры не умеют.
GDB полезен в основном для изучения корок предсмертных дампов и не более того, для OpenSCADA.
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 21. 10. 2011 [09:54]
|
almaz
Almaz Karimov
Contributor
Зарегистрирован(а) с: 25.09.2008
Сообщения: 516
|
"hyper_sonic" wrote: Все-таки я не представляю себе как писать программный модкль не имея возможности его отладить? При написании любой программы на любом языке программирования возможность отладить есть всегда. Отлаживаю вставкой в нужном месте программы одной строчки (чаще всего) дополнительного кода, который выводит интересующие значения на экран терминала (или собирает значения в строковую переменную, в массив, в файл, в БД и т.д. с последующим выводом для просмотра и анализа). В сложных программах можно делать множество вставок таких "контрольных точек", контролируя одновременно множество взаимодействующих значений переменных.
21 век - век повсеместной автоматизации. Главное - во благо всем людям.
|
Сообщение создано: 21. 10. 2011 [13:28]
|
hyper_sonic
Роман Федоров
Создатель темы
Зарегистрирован(а) с: 13.09.2011
Сообщения: 13
|
"almaz" wrote:
"hyper_sonic" wrote: Все-таки я не представляю себе как писать программный модкль не имея возможности его отладить? При написании любой программы на любом языке программирования возможность отладить есть всегда. Отлаживаю вставкой в нужном месте программы одной строчки (чаще всего) дополнительного кода, который выводит интересующие значения на экран терминала (или собирает значения в строковую переменную, в массив, в файл, в БД и т.д. с последующим выводом для просмотра и анализа). В сложных программах можно делать множество вставок таких "контрольных точек", контролируя одновременно множество взаимодействующих значений переменных.
Да конечно можно и так, но я только начинаю изучать как в OSCADA все тикает, а имея возможность отладить было бы проще это сделать.
|
Сообщение создано: 21. 10. 2011 [14:19]
|
almaz
Almaz Karimov
Contributor
Зарегистрирован(а) с: 25.09.2008
Сообщения: 516
|
При первом знакомстве с OpenSCADA тоже пытался настроить Netbeans для работы с исходным кодом. Сходу не получилось, поэтому и использую старый, добрый, простой и скоростной метод отладки вставкой отладочного кода. Если хотите пойти более сложным путём и всё-таки настроить Netbeans для работы с кодом OpenSCADA - пожалуйста. Поделитесь потом опытом... Может тоже попробую поработать с IDE...
http://netbeans.mojgorod.ru/netbeans_firefox.html
[Сообщение редактировалось 2 раз(а), в последний раз 22.10.2011 в 02:24.]
21 век - век повсеместной автоматизации. Главное - во благо всем людям.
|
Сообщение создано: 31. 10. 2011 [10:15]
|
hyper_sonic
Роман Федоров
Создатель темы
Зарегистрирован(а) с: 13.09.2011
Сообщения: 13
|
"almaz" wrote:
При первом знакомстве с OpenSCADA тоже пытался настроить Netbeans для работы с исходным кодом. Сходу не получилось, поэтому и использую старый, добрый, простой и скоростной метод отладки вставкой отладочного кода. Если хотите пойти более сложным путём и всё-таки настроить Netbeans для работы с кодом OpenSCADA - пожалуйста. Поделитесь потом опытом... Может тоже попробую поработать с IDE...
http://netbeans.mojgorod.ru/netbeans_firefox.html
Спасибо изучил ссылку, прикрутил Netbeans и даже теперь запускается отладка, сборка и очистка проекта работает, подсветка... Дал пользователю, из под которого работаю в системе, разрешение на создание задачи с риал-тайм приоритетом...(см. последнюю строчку)
cat /etc/security/limits.conf
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - an user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
# - NOTE: group and wildcard limits are not applied to root.
# To apply a limit to the root user, <domain> must be
# the literal username root.
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
# - chroot - change root to directory (Debian-specific)
#
#<domain> <type> <item> <value>
#
#* soft core 0
#root hard core 100000
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#ftp - chroot /ftp
#@student - maxlogins 4
@realtime - rtprio 99
# End of file
Без этого отладчик отваливался. Но отладить модуль сбора все равно не выходит...
Ставлю точку останова в какой-нибудь функции, а отладчик ее игнорирует. Ловит точки останова только в основном потоке...
|
Сообщение создано: 31. 10. 2011 [13:54]
|
almaz
Almaz Karimov
Contributor
Зарегистрирован(а) с: 25.09.2008
Сообщения: 516
|
Может вот эта ссылка поможет? Отладка многопоточных приложений в среде IDE NetBeans:
http://netbeans.org/kb/docs/java/debug-multithreaded_ru.html
Там же есть видео по многопоточной отладке:
http://netbeans.org/kb/docs/java/debug-multithreaded-screencast.html
Ещё в настройках "C++ Compiler" есть параметр "Multithreading Level":
http://netbeans.mojgorod.ru/project_properties.html
[Сообщение редактировалось 1 раз(а), в последний раз 31.10.2011 в 14:06.]
21 век - век повсеместной автоматизации. Главное - во благо всем людям.
|