Just the functionality I was looking for, including redirection
- Log in to post comments
Just the functionality I was looking for, including redirection
After it got corrupt it stands at the first line for the duration of debugging. I doubt this was the design idea ![]()
That's exactly the problem: the new breakpoint is reached but no yellow box and the cursor stays at the routine's first line. The code is executed though because the variable set right before this single breakpoint gets defined correctly as per Watch. I did follow your instructions except I still used the corrupt routine.
I doubt I can reproduce this corruption intentionally because that requires understanding why it got corrupted in the first place and that is still a mystery to me.
I'll remember your advice for mac or cls but my problem is with int routines. If I press View Other Code for them I see "There is no other code to view" and the yellow box still does not appear.
I did not find anything obvious how to do that. Could you explain it in more details or post a documentation link?
That means setting up, testing, and learning VScode plugin too which takes considerable time, I tried it before.
Robert, a bit more info after I tested a bit more:
1) The first program above, TestAG exhibited the same corrupt debugging behavior when I set it up as debug target for another project however this another project started debugging alright when I switched to a yet another debug target:.png)
2) Test in this comment above leads me to think that the corrupt debug behavior might be associated with a program more than with a project. I don't think it is associated with the old style b break since it behaves correctly, the same as before.
I am not sure I am falling into the .obj code with this problem but maybe I do. Just to be clear what is happening and what is not, a couple of screenshots.
1) TestAG^TestAG is the debug target, hand-written routine, and I pressed Go once, so presumably the debugger now sits at this breakpoint. However, no yellow box and the cursor is one line up. Shift+F11 does not make the cursor or the yellow box to appear anywhere else (I have other breakpoints too)..png)
2) This is normal behavior. last is the debug target and the cursor correctly stops at the programmatic breakpoint with a suitable yellow box..png)
So any advice how to fix it?
I was debugging INT code successfully when it suddenly stopped working as described in the OP. Since then it is reproducible for this specific project and recompiling does not help.
It was non-generated INT code in the first place. I did try VSCode before but so far prefer Cache Studio.
That was, of course, it. I was so used to our "in-house" SQL with double quotes around strings that it never occurred to me that the outside world uses single quotes. Thanks, David!
Helped me today as well! Thanks, Robert.
@Vitaly Furman and @Alexander Koblov
Hi Alexander and Vitaly,
Sorry for the delay in acknowledging your replies. This is still work in progress because it got superseded by other tasks. I'll let you know of the developments later.
Thanks,
Anna
@Alexey Maslov The ultimate goal is to create identical globals on 2 different machines with a single run, on demand. I can run code on the first machine, then export global creating code which changes regularly, reconnect the Studio to a different machine, import code, then run it again. This is decidedly not a single run. I can also export and import global too, of course. I am willing to learn functionality that would be faster to deploy than these two approaches. Ideally as fast as ZN which unfortunately works on the same machine only but I might be wrong about that.
Marc, I'll consider going the Web Service way, but I am not a total but still a beginner in Cache. I never used Web Services before so I would need to learn that. I wish there would something as straightforward as the RemoteResultSet queries which take just a few short and obvious lines of code, no learning curve.
Mike, @Alexey Maslov is exactly right: no licensing for ECP either, just checked.
More importantly, as I just found out, "mirroring is unavailable for the current license"
@Katherine Reid My goal is to update two globals on two different machines at the same time. That needs to be done from time to time only. Would or could "other async mirrors purposes" include that? If so is there any technical reading or specific classes, or the namespace setup, related to async mirroring that you would recommend to use for such a job? For example, this 101 guide, https://community.intersystems.com/post/cach%C3%A9-mirroring-101-brief-… , specifically states "Deploying a Caché mirror does, however, require significant planning, and involves a number of different procedures. And like any other critical infrastructure component, the operating mirror needs ongoing monitoring and maintenance." Given that I simply need to keep two globals in sync the Export/Import process seems much faster that what is described by this mirroring quote.
@Evgeny Shvarov If by mirroring you mean this, https://www.intersystems.com/resources/detail/intersystems-cach-databas…, it seems like a huge overkill just to keep two globals in sync across network. This is not a backup situation. If mirroring could be scaled down to such a task, I am all ears.
I looked up your single class under your third link and it's probably a total newbie question but I don't see where would you specify login info for the remote server.
I'll look up applications under the first and the third link, thanks. The middle one is specific to IRIS, just checked, and I have Cache. I was more hoping for a short set of commands but if that is not available, oh well.
This is indeed the place for current local variables, thanks! However it has a minor and a major problems in my Cache 2017 instance. The minor problem is that I need to right click in the area to display those variables which disappear again with the next debugging step. So it is sort of semi-automatic. The major problem that this action freezes Studio pretty quickly. Maybe this freezing is fixed in subsequent releases, I don't know.
That's exactly what I need, under Local Variables!
Watching variables by typing them as well as hovering works in Cache Studio too. I am interested in automatically appearing (and disappearing) watch variables. Basically the debugger flow in this respect would be:
s a=1 ; When debugger is on this line show value of a automatically; don't show c yet; showing value of b is optional
s b=2 ; When debugger is on this line show value of b automatically; showing value of a is optional
s c=3 ; When debugger is on this line show value of c automatically; showing value of b is optional; stop showing a
Now, I don't know the exact Visual Studio rules when they start and stop showing a variable but the current line variables are always shown. No hovering or typing needed.
Yes, yes. all that is good and I use it but that comfort, arghhh...
Schönen Abend aus Boston,
Anna
Hi Robert,
That I know how to do and I do it. What I would like to have this way or other is that the file name appears in the Watch window by itself when I am on the line with this variable, the way Microsoft Visual Studio works, say, with debugging C++.
Anna
P.S German was an unexpected bonus for my one year long studies of it. I could translate about half of German words on your screenshot so not even A1 yet
.
Very useful, Nigel! The legacy documentation for the still perfectly functioning code, at least some of it, can be accessed from here: https://cedocs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GDOC_legacy
Anna
I think this case study proves that newer utilities are not always better so I would not bet on the latest IRIS version. I did see the Background run advice but would it cut three hours to 10 minutes? I doubt it. And if it would I'd say it's a portal implementation deficiency.
Everybody, thanks for your help and advice but the old-timer's advice to go the d ^%GOF route in Cache Terminal proved to be it. It was actually amazing to see how much superior this route turned out to be comparing with the much more modern Export/Import Management Portal route. Specifically:
Sample %GOF usage in terminal, hit Enter if no special requests, exporting:
d ^%GOF
Device: tmp.gof
file format: ("UNW*") =>
Maximum media size (bytes): (No maximum)
Enter a short description of the contents of this tape or file
Description:
All Globals? No => No
Global ^S-SZ [All globals in this range, case-sensitive - AG]
Global ^'STPL* [Exclude all globals that start with STPL - AG]
Real life output from my real life usage:
...............
^ZPG 182 data blocks written
^ZTEMP 1 data block written
491,337 blocks written in 10 minutes, 51 seconds
--------------------
Importing was done via d ^%GIF, via terminal as well. At some point the %GIF utility asked me:
Globals with a preceding asterisk ('*') already exist in this directory
What would you like to do with these globals that exist?
1. Skip inputting globals that exist in this directory
2. Merge input globals with the existing globals
3. Specify skip/merge for individual globals
Your choice: 1=>
Thanks again,
Anna