25.04.2018, 17:21 | #1 |
Administrator
|
Отладка в D365FO
Всем привет!
Хочу зафиксировать то, с чем пришлось недавно столкнуться и с чем столкнулись многие, кто уже работает с D365FO, но что для новичков может быть будет интересно. Речь идет об отладке в Visual Studio. Отладка в D365FO производится в Visual Studio путем присоединения (attach) студии к процессу. В момент отладки другие пользователи работать с системой не могут (сайт висит белым экраном). Соответственно, как мы добираемся до отладчика: Предварительная настройка
Расстановка точек останова Хорошо, когда есть возможность запустить код на исполнение сразу из студии (например, исполняемый класс (Runnable class)), но если надо провалиться в отладчик прямо из формы, то форму сначала нужно запустить в обозревателе и поставить точки останова в студии. Ищем нужную строку и жмем кнопку F9 или выбираем меню Debug-Toggle Breakpoint. В данном случае мы поставили точку останова на форме заказов на покупку (PurchTable) Запуск обозревателя Чтобы присоединиться к процессу обозревателя – обозреватель нужно сначала запустить. А иногда и перезапустить (или обновить), если он был запущен до того, как был выполнен билд. Открывать саму форму пока не надо, т.к. наша точка останова должна сработать на открытии формы, однако я укажу на скриншоте как из меню я вызываю форму Присоединение Идем в студию и выбираем пункт меню Debug-Attach to Process… Вот теперь и начинаются различия.
Загрузка отладочных символов После присоединения к процессу необходимо убедиться, что все отладочные символы загрузились (бывает, что они не все загрузились). Такая картинка говорит о том, что отладочные символы для данной точки останова не загрузились и либо они дозагрузятся, когда мы откроем форму, либо их надо вручную дозагрузить. Я предпочитаю загружать все символы, т.к. они один раз загрузятся и больше потом кнопка Load All не будет тормозить (если конечно не будет удален кэш файлов). Бывает конечно что подтормаживает, но в целом по моему субъективному мнению процесс загрузки ускоряется. В интернете я находил способы частичной загрузки, но как-то они у меня нестабильно работали. Иногда бывает, что надо отсоединиться (меню Debug-Stop debugging) и снова подсоединиться. После успешной загрузки символов точка останова "краснеет": Прерывание Открываем нашу форму заказов на покупку, обозреватель подтормаживает, мы смотрим в студию и ... вот она заветная желтая полосочка со списком переменных внизу. Следует обратить внимание на разницу пунктов меню между Debug-Stop debugging (или DetachAll) и Debug-Terminate All. В последнем случае прекращается исполнение кода, в то время как в первых вариантах студия всего лишь отцепляется от исполнения кода, а код продолжает исполняться (Stop debugging – остановка отладки, но это не остановка выполнения кода) Тоже самое для процесса w3wp.exe Еще маленькое дополнение к IIS Express. Если в силу ряда причин хочется отказаться от использования IIS Express и вернуться к старому доброму IIS (а также хочется, чтобы при открытии студии сайт не падал при переключении с IIS на IIS Express), то можно в файлике C:\AosService\PackagesLocalDirectory\Bin\DynamicsDevConfig.xml заменить значение параметра RuntimeHostType с IISExpress на IIS (само собой после этого нужен рестарт IIS). После этого для отладки нужно будет подключаться к процессу w3wp.exe Забыл добавить. Версия, на которой все показывалось - 8.0 PU 15
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 25.04.2018 в 17:51. |
|
|
За это сообщение автора поблагодарили: Logger (15), imir (2), raz (10), DAX.Company (3), trud (10), mazzy (10), AlexeyS (5), EVGL (10), Stitch_MS (9), Weez (2), S.Kuskov (10), gl00mie (10), A_BAS (2), MarinaAX (2), IvanS (1), Ivanhoe (5), Melkiades (1). |
25.04.2018, 17:56 | #2 |
Участник
|
Насчет "сайт висит белым экраном" - это при использовании одного сервера для всех пользователей или вообще в принципе, не зависимо от количества серверов?
__________________
Ivanhoe as is.. |
|
25.04.2018, 18:15 | #3 |
Administrator
|
Цитата:
В жизни, после присоединения к процессу - мой обозреватель нормально работает (немного подтормаживает), а у остальных (если, к примеру, у меня есть dev-среда, размещенная в облаке и в нее заходят через обозреватель несколько пользователей) - висит белым экраном. Т.е. в момент отладки остальные пользователи (если они есть) - курят бамбук
__________________
Возможно сделать все. Вопрос времени |
|
25.04.2018, 18:26 | #4 |
Участник
|
Попробую перефразировать. В 2012 можно было дебажить AOS - при этом все, кто работали через этот же AOS курили бамбук. Все кто подключался к другому AOS на той же БД - работали спокойно.
Если перенести аналогию на Dyn365FO - все курят бамбук независимо от количества серверов в инсталляции, или аналогично с 2012 - курят бамбук только пользователи одного IIS?
__________________
Ivanhoe as is.. |
|
25.04.2018, 18:39 | #5 |
Administrator
|
Теперь понятно, спасибо. Сейчас все проще. AOS один и он называется IIS. Служба, обрабатывающая пакетные задания - Batch. Сайт называется AOSService, база - AxDB. Ну т.е. несколько IIS-ов на одной машине не развернешь ).
Не знаю, как в варианте On-Premise, потому что теоретически можно наверное какой-нибудь кластер серверов развернуть и тогда, безусловно будет лочиться IIS только какого-то одного сервера. Но в облачном варианте студия на проде и тесте исключена как класс. Т.е. предполагается, что каждый разработчик имеет свою локальную виртуалку и ходит на дев-приложение только для целей сборки кода от разных разработчиков. На облачный прод даже доступа нет ) от слова совсем . С него можно только попросить инженеров МС снять копию БД, а на него можно накатить пакадж программного кода
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 25.04.2018 в 18:42. |
|
25.04.2018, 18:51 | #6 |
Moderator
|
В On Premises отлаживаться не получается. Во первых - там нет IIS в принципе. Есть Service Fabric, которое как-то и куда-то грузит assembly аксапты и как-то организует Web interface к ним. Во вторых - нету никакой документации о том как отлаживать там код Ax. То есть - теоретически имеется возможность отлаживать контейнеры Service Fabric, но аксаптовского tooling'а для этого нет. (да и как мне кажется, отладка может идти только в урезанной локальной версии Service Fabric, на которую Аксапту не установить...)
Последний раз редактировалось fed; 25.04.2018 в 19:04. |
|
|
За это сообщение автора поблагодарили: sukhanchik (4), trud (2). |
25.04.2018, 19:45 | #7 |
Участник
|
и это только для отладки? чОрт побери ...
|
|
26.04.2018, 08:28 | #8 |
Участник
|
1) Для отладки можно поставить точку останова не загружая форму, просто поставить в VS (я, правда, работаю в основном с формами из проекта)
2) На скриншоте показывается настроенная загрузка символов "все, кроме перечисленных", я обычно выставляю в "только перечисленные" - там можно выбрать модуль со звездочками, например *ElectronicReporting* 3) Есть настройка Dyn365FO "загружать символы только в проекте", я обычно ее отключаю. 4) Есть окно "Modules", в котором можно загрузить символы для модуля уже в процессе отладки |
|
|
За это сообщение автора поблагодарили: sukhanchik (6). |
26.04.2018, 08:36 | #9 |
Участник
|
Что не отменяет возможности дебижать тест не имея студии на нем https://docs.microsoft.com/en-us/dyn...-of-production
|
|
|
За это сообщение автора поблагодарили: sukhanchik (10). |
26.04.2018, 08:38 | #10 |
Участник
|
Цитата:
|
|
|
За это сообщение автора поблагодарили: skuull (2). |
26.04.2018, 10:08 | #11 |
северный Будда
|
Я бы ещё дописал, что
1) для отладки пакетов надо аттачиться к отдельному процессу Batch 2) чтобы дебажить джобы - нужно кликать на Debug/ Start without debugging. Предварительно указав джоб как Set as Startup object
__________________
С уважением, Вячеслав Последний раз редактировалось pitersky; 26.04.2018 в 10:15. |
|
|
За это сообщение автора поблагодарили: sukhanchik (6). |
26.04.2018, 10:34 | #12 |
Administrator
|
Цитата:
Сообщение от belugin
1) Для отладки можно поставить точку останова не загружая форму, просто поставить в VS (я, правда, работаю в основном с формами из проекта)
2) На скриншоте показывается настроенная загрузка символов "все, кроме перечисленных", я обычно выставляю в "только перечисленные" - там можно выбрать модуль со звездочками, например *ElectronicReporting* 3) Есть настройка Dyn365FO "загружать символы только в проекте", я обычно ее отключаю. 4) Есть окно "Modules", в котором можно загрузить символы для модуля уже в процессе отладки В примере, который я привел настройка "загружать символы только в проекте" была включена, но проекта не было. Вообще там 2 настройки - эта и "только мой код" Флажок "загружать символы в проекте" я не трогал, а вот "только мой код" - менял - иначе с ней можно не провалиться в код вне проекта. А вот без нее проваливаешься, но периодически и получаешь какие-то C#-ные вызовы, по которым отладчик тоже проходит. Поэтому я ее туда-сюда ставлю . Про окно Modules я тоже читал - в статье советовали загрузить к примеру модуль Ledger при отладке в финансовом контуре. И это работает. Но это еще надо догадаться, какой модуль загрузить . Иногда модуль можно не угадать и тогда время, потраченное на эту процедуру сильно возрастает перед обычной кнопкой Load all. Ну а как я уже писал - отладка - это не самоцель - это инструмент и когда хочется его использовать - хочется это сделать минимальными усилиями, чтобы не отвлекаться от основной мысли.
__________________
Возможно сделать все. Вопрос времени |
|
26.04.2018, 10:38 | #13 |
Administrator
|
Цитата:
Сообщение от skuull
Что не отменяет возможности дебижать тест не имея студии на нем https://docs.microsoft.com/en-us/dyn...-of-production
Я из схемки и описания понял, что дебажится БД теста, но приложение берется с дева и сама отладка идет с дева, при этом дев останавливается (просто он перенацеливается на базу теста). Я неправильно понял?
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 26.04.2018 в 11:10. |
|
26.04.2018, 10:50 | #14 |
Участник
|
Цитата:
Сообщение от sukhanchik
Иногда модуль можно не угадать и тогда время, потраченное на эту процедуру сильно возрастает перед обычной кнопкой Load all. Ну а как я уже писал - отладка - это не самоцель - это инструмент и когда хочется его использовать - хочется это сделать минимальными усилиями, чтобы не отвлекаться от основной мысли.
|
|
26.04.2018, 11:01 | #15 |
Administrator
|
Цитата:
Нужно указать Startup project (если у вас в Solution несколько проектов) - это проект, в котором находится запускаемый класс Нужно указать Startup object в проекте или свойствах проекта - это сам запускаемый класс. В свойствах проекта Еще можно указать как сам Startup object, так и раздел и компанию, в которой его необходимо запустить И после этого уже жать заветную зеленую кнопку
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 26.04.2018 в 11:03. |
|
26.04.2018, 11:08 | #16 |
Модератор
|
Дебажится текущее приложение в DEV подключенное к БД на TEST. Если в TEST деплоите регулярно и большой рассинхронизации по структуре БД между DEV и TEST нет - рабочий вариант если надо что-то срочно посмотреть. Но мы все равно bacpac-и из TEST в DEV регулярно (не реже раза в месяц) гоняем
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: sukhanchik (4). |
26.04.2018, 11:13 | #17 |
Moderator
|
Цитата:
Но в целом - то что в статье описано - это такой хак для того чтобы можно было отлаживать приложение в DEVTEST, не дожидаясь переливки данных из TEST в DEVTEST. |
|
|
За это сообщение автора поблагодарили: sukhanchik (4). |
26.04.2018, 11:24 | #18 |
Administrator
|
Понятно, спасибо за информацию - будем привыкать к новым реалиям
__________________
Возможно сделать все. Вопрос времени |
|
26.04.2018, 11:50 | #19 |
Участник
|
|
|
26.04.2018, 11:55 | #20 |
Moderator
|
Про отнятие RDP-доступа писали здесь: https://blogs.msdn.microsoft.com/lcs...-subscription/
Про Service Fabric и доступ к SQL Management studio писали где-то в яммере. P.S. Писали здесь: https://www.yammer.com/dynamicsaxfee...ads/1040155537 Последний раз редактировалось fed; 26.04.2018 в 11:58. |
|
Теги |
d365, d365 for operations, debugger, debugger365, lbd, отладка |
|
|