Donnerstag, Juli 28, 2005

Tip: How to find out where that error message comes from

Have you ever got an error or info message in Axapta saying "Cannot post...." and wanted to know where that error is coming from?
Here's a tip how to find out where the info message is thrown.

First, add a breakpoint in the Info class, method add:


After that, run the script that throws the error. As soon as the error message is thrown, the Axapta debugger will pop up:

At the lower part of the screenshot, you can see the call stack (if not, go to menu "View" and activate menu item "Call stack").
In the call stack, you can double-click on any line and the debugger will go back to it. Let's say we clock on the third line of the screenshot above. The debugger will take us to the Class TaxCov, method TaxLedgerCov:

You can see that the debugger put us exactly to the place where the error was thrown.

With the above method, it's pretty easy to find your way around the infos that Axapta gives you.

1 Kommentar:

Diego Gagliano hat gesagt…

You can also modify this method with:
Class: Info
Method: Add
Add this line
if (_sysInfoAction && !_sysInfoAction.enabled()) //test access rights
_sysInfoAction = null;

// DMG
if (!_sysInfoAction)
{
_sysInfoAction = this.callerInfo();
}
// DMG
if (_helpUrl || _sysInfoAction)
{

Create a method: CallerInfo
// DMG
SysInfoAction callerInfo()
{

UserInfo userInfo;
container callStack;
sysInfoAction_Editor infoAction;
;

select firstOnly debuggerPopup from userInfo
where userInfo.id == curUserId();

if(userInfo.debuggerPopup & 0x00FF == 0) // Debugg mode = No
{
return null;
}

callStack = xSession::xppCallStack();

return SysInfoAction_Editor::newLineColumn(conPeek(callStack, 7), conPeek(callStack, 8));

}

With this code when show the error, previuos to the Ok, Axapta create a new button to link you directly to the error.