|
22.12.2010, 18:11 | #1 |
Участник
|
Как программно получить стек вызовов?
DAX2009 SP1 RU6
Можно ли программно получить в виде строки стэк вызовов, такой же, как, например, получается при трассировке SQL? Мне при закрытии склада нужно понимать откуда вызывается метод при определенных условиях. Профайлер кода не запустишь - слишком много всего выполняется, под отладчиком ждать долго. |
|
22.12.2010, 18:29 | #2 |
Axapta
|
X++: static void CallStack(Args _args) { str s; int i; container stackTrace = xSession::xppCallStack(); ; for(i=1;i<=conLen(stackTrace);i+=2) { s+=strFmt("%1",conPeek(stackTrace, i)); } info(s); } |
|
|
За это сообщение автора поблагодарили: Bega (1). |
22.12.2010, 18:46 | #3 |
Сам.AX
|
В 3-ке в Global был такое метод:
X++: static void callStack2infolog(str _prefix = "@SYS65092") { container stack = xSession::xppCallStack(); counter n; TreeNodePath stackPath; int line; ; setPrefix(_prefix); for (n = 3; n <= conLen(stack); n += 2) { stackPath = conPeek(stack,n); line = conPeek(stack,n+1); if (line) { info(strfmt("%1 %2", stackPath, line),'', SysInfoAction_Editor::newLineColumn(stackPath, line)); } else { info(strfmt("%1", stackPath)); } } }
__________________
"Считать метафору доказательством, поток праздных слов источником истины, а себя оракулом - это заблуждение, свойственное всем нам." Поль Валери |
|
|
За это сообщение автора поблагодарили: Bega (1). |