Arto Alatalo · Apr 12, 2017 go to post

Looks interesting, thanks for sharing.

What is your problem with breakpoints? As I recall, they are just a collection property of Project object, so you shouldn't have any problems at least to clear them.

BTW: why it is important for you to have project items sorted alphabetically?

Arto Alatalo · Apr 12, 2017 go to post

Of course if your debugger is as bad as Cache Studio's than you have to find a way to live without wink

After so many year with Microsoft Visual Studio the debugger is the thing I use every day. Not because my code is so bad that I have to hunt the bugs all the time. I like to step through each line of new code with debugger to ensure that it not only works well but also "smells" well (names are reasonable, log texts are reasonable etc).

In Cache I use debugger to run my unit tests using my very simple unit test framework - if a test fails, you can very quickly step it through without any zen meditations.

Many thanks for the tip about track variables option,  I never knew it. Very useful. After c++ the lack of basic syntax checking drives me mad sometimes.

About (10) in your list. I would say each app must have a diagnostic log with configurable level of details. This is the way to get ideas about events/names/ids involved. Not stone-age temporary traces in the source code.

Arto Alatalo · Apr 12, 2017 go to post

here is one real example of my self backed location:

<EXCEPTION>
assertion failed: digi.chimport.debugMakeStatus: invalid param: 'acc' stack:
zthrowif+2^digi.core.AssertException.1 +1
zdebugMakeStatus+7^digi.chimport.1 +1
ztestChImport+43^digi.test.main.1 +1
%DispatchClassMethod+8^digi.test.framework.1 +1
zdoall+11^digi.test.main.1 +1
zrun+3^digi.test.main.1 +1
zDebugStub+30^%Debugger.System.1 +2
</EXCEPTION>

Arto Alatalo · Apr 12, 2017 go to post

It will but with two nuances:

^%oddENV("callererrorinfo") must be set

- the format could be a bit cryptic, like 

Location = "zrun+3^digi.test.main.1"

while my home made location will says "assertion XYZ failed in digi.test.mai.run"

BTW: can you tell what UI/api is supposes for setting values of ^%oddENV, in particular "callererrorinfo"?

Arto Alatalo · Apr 12, 2017 go to post

That's too complicated for my needs. I export with my own tool so it would be easier to change the tool to clear breakpoints before the export

Arto Alatalo · Apr 12, 2017 go to post

I had a problem with $classname in some situations but I'll recheck it. Thank you.

Arto Alatalo · Apr 12, 2017 go to post

I had a problem with $classname in some situations but I'll recheck it. Thank you.

Arto Alatalo · Apr 12, 2017 go to post

That's perfectly OK for my objective: all I need, is just a text like "location of your exception is <location>". Will <location> be A.Abc or B.Abc doesn't really matter.

Arto Alatalo · Apr 12, 2017 go to post

Indeed, the documentation of ##Expression describes the behaviour and ##SafeExpression avoids the copying.

Many thanks, Eduard!

Arto Alatalo · Apr 12, 2017 go to post

Indeed, the documentation of ##Expression describes the behaviour and ##SafeExpression avoids the copying.

Many thanks, Eduard!

Arto Alatalo · Apr 11, 2017 go to post

John,  because of debugging:

- you set breakpoint in A.Abc() but it never hit because cache executes B.Abc()

- because of some reason, debuger is not able to step in nether of the copies

Arto Alatalo · Apr 11, 2017 go to post

I did this test before posting my question to see if the overloading stops the copying.  It does stop and I see compiler generates code like 

##class(A)$this.Abc()

but  this way can not be seen as solution because this trick must be done for each such method in each derived class