AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.04.2011, 18:11   #1  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
856 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
Отладка кода в 2012
как известно, в 2012 к Х++ добавили IL-код
некоторые классы (например наследоваемые от SysOperationServiceController) могут исполняться в IL- коде
возникает проблема с отладной работы таких классов.

1й вариант - отдладка IL кода через Visual studio - вроде в одной из демок про это говорилось, сходу не нашел, как это делать.

но у меня возник вопрос: может можно как-нибудь настроить, чтобы класс исполнялся в старом добром X++ коде, ну и в целях отладки как-нибудь переключать режим исполнения.

Кто-нибудь уже сталкивался, как дебажить такой код?
Старый 28.04.2011, 19:02   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от lvan Посмотреть сообщение
как известно, в 2012 к Х++ добавили IL-код
некоторые классы (например наследоваемые от SysOperationServiceController) могут исполняться в IL- коде
возникает проблема с отладной работы таких классов.

1й вариант - отдладка IL кода через Visual studio - вроде в одной из демок про это говорилось, сходу не нашел, как это делать.

но у меня возник вопрос: может можно как-нибудь настроить, чтобы класс исполнялся в старом добром X++ коде, ну и в целях отладки как-нибудь переключать режим исполнения.

Кто-нибудь уже сталкивался, как дебажить такой код?
Похоже что нет. Есть хак, но он требует удаления service groups, которые на SYS слое, то есть нельзя удалить без SYS license.

Steps to disable execution of the X++ code in IL:
1) ax32 –development
2) Turn off VCS
3) Close AX client
4) Run AX2012 client configuration utility as administrator
5) Create new configuration based on the original one. Call it SYS.
6) Change application object layer to SYS
7) Enter SYS license code
8) Apply settings
9) ax32 –development
10) In AOT navigate to the Service Groups node. Find AxClient service group
11) Delete FormLetterService from the group (that’s for PO\SO posting. Other services can be removed as well, if needed)
12) Right click on service group and press ‘Deploy Service Group’. That will take some time.
13) Close AX client
14) In AX client configuration utility change configuration to Original
15) Apply settings
16) ax32 –development
17) Turn on VCS
Старый 29.04.2011, 01:03   #3  
gigz is offline
gigz
Участник
MCBMSS
Соотечественники
 
19 / 43 (2) +++
Регистрация: 15.09.2008
Знакомые 17 пунктов

Чтоб дебагить студией нужно сделать ей Attach to process на Ax32serv.exe. После этого открыть студией нужный исходник (исходники лежат в Server\[AOS Name]\bin\XppIL\source) и ставить брейкпоинт.

По поводу отключения выполнения в IL простых вариантов нет, к сожалению. Теоретически, вместо удаления сервиса из группы (что требует SYS лицензии) можно заменить сервис на фейковый (тоесть создать копию класса сервиса и использовать его в сервисе вместо оригинального). Должно сработать, но я не пробовал.
Старый 29.04.2011, 09:06   #4  
AlexSD is offline
AlexSD
Microsoft Dynamics
Сотрудники Microsoft Dynamics
 
257 / 302 (11) ++++++
Регистрация: 14.10.2003
1. Вместо 11 шага, что бы не ставить SYS коды, я пользовался вариантом замены значения свойства service c FormletterService на InventItemService. Далее по списку.
2. Необходимо подправить место интересующего ухода в IL, так, что бы исполнение туда не уходило. Например, в методе \Classes\SysDictClass\invokeObjectMethod необходимо сделать правочку, что бы исполнение всегда проваливалось на веточку х++.

Таких мест по приложению раскидано достаточно много. Можно поискать по ключевым словам, типа, XppILExecutePermission или runAs. Но, достаточно дебагером найти нужную точку перехода исполнения в IL и временно слегка подправить ее в нужную сторону. Например, тут \Data Dictionary\Tables\PurchTable\Methods\initFromVendTable
заменить
X++:
    xppILExecutePermission = new XppILExecutePermission();
    xppILExecutePermission.assert();
    purchTableContainer = runTableMethodIL(tableStr(PurchTable),
                        tableStaticMethodStr(PurchTable, initFromVendTableIL),
                        [buf2Con(this, true), buf2Con(_vendTable, true)]);
    CodeAccessPermission::revertAssert();
на
X++:
    purchTableContainer = PurchTable::initFromVendTableIL([buf2Con(this, true), buf2Con(_vendTable, true)]);

Последний раз редактировалось AlexSD; 29.04.2011 в 09:17.
За это сообщение автора поблагодарили: Logger (3).
Старый 30.04.2011, 09:16   #5  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,893 / 5650 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
А я правильно понимаю, что во варианте с Attach To Process ax32serv.exe, при срабатывании breakpoint весь AOS суспендиться и все пользователи нервно курят до тех пор пока разработчик не нажмет F5?
За это сообщение автора поблагодарили: gl00mie (3).
Старый 01.05.2011, 01:53   #6  
gigz is offline
gigz
Участник
MCBMSS
Соотечественники
 
19 / 43 (2) +++
Регистрация: 15.09.2008
К сожалению, скорее да, чем нет. Суспендится CLR host на AOS. Тоесть выполнение любого менеджд кода любым пользователем засуспендится. Но всякие мелочи, как то открыть Table Browser, можно без проблем.
Старый 02.05.2011, 12:23   #7  
AlexSD is offline
AlexSD
Microsoft Dynamics
Сотрудники Microsoft Dynamics
 
257 / 302 (11) ++++++
Регистрация: 14.10.2003
ага... опыт показал, вторым клиентом на остановленный на брекпоинте АОС зайти не удается.
Старый 02.05.2011, 12:30   #8  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,893 / 5650 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Хочется надеяться, что в SP1 в системе реализуют отладочный режим и для конкретной сессии можно будет заказать использование выделенного CLR Host.
Вообще что-то мне кажется что со многими фичами может получиться как с переходом на RPC и Microsoft NLB (или это был Microsoft Cluster Server?) в версии 4.0. Реализовали, получили кучу негативного фидбека, попытались починить, потом не смогли и в версии sp1 выключили и вернули назад. Правда я слабо понимаю, как вы, например, сможете откатить новую главную книгу...
Старый 02.05.2011, 12:42   #9  
AlexSD is offline
AlexSD
Microsoft Dynamics
Сотрудники Microsoft Dynamics
 
257 / 302 (11) ++++++
Регистрация: 14.10.2003
Выкрутимся как-нибудь, как обычно...
Старый 02.05.2011, 12:54   #10  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,893 / 5650 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от AlexSD Посмотреть сообщение
Выкрутимся как-нибудь, как обычно...
Добавите после старых объектов суффикс _RU и сделаете вид что это локализация ?
Теги
отладка, ax2012

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
daxdilip: Whats New in Dynamics AX 2012 (A brief extract from the recently held Tech Conf.) Blog bot DAX Blogs 7 31.01.2011 12:35
AX 3.0 отладка кода через COM Business Connector in 2T McCoy DAX: Программирование 4 23.04.2009 14:48
Отладка кода C# при разработке под EP AX2009 player DAX: Программирование 4 24.09.2008 19:38
Отладка кода web-приложений Антон Солдатов DAX: Функционал 14 29.04.2007 05:27
отладка кода в трехзвенке maxsmirnov DAX: Программирование 4 06.04.2004 11:33

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:18.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.