go to post Anna Golitsyna · Aug 12 It is very verbose but yes, I got it working now too. Thanks, Robert! It is interesting that the resultant file lists only routine names but not the labels. Instead of a label name, it lists the label line number.
go to post Anna Golitsyna · Aug 11 Thanks, Robert. It is available in 2017, but I was not able to set it up yet. Something is still wrong the way I run it, please see below. I start debugging, stop at a breakpoint and input the $J value.%SYS>D DIR^TRACE() %SYS>D ^TRACE TRACE utility for Cache. You can signal a process to write a record of allprocedure, function, or subroutine calls to a file. Then use this utility tointerpret and display the trace. The trace file is named: CacheTrace_'pid'.txt Use $$DIR^TRACE(dir) to set the directory where the file(s) should be written(process must have create/write access to the directory). $$DIR^TRACE() returnsthe current directory for trace files. Use $$ON^TRACE(pid) to start the trace and $$OFF^TRACE(pid) to end therecording. Then just run ^TRACE to see the results. Process ID for trace file: 5352Output to: <0> TestAG.txt Processing file ... -1,Unable to open file CacheTrace_5352.txt%SYS>
go to post Anna Golitsyna · Aug 8 Thanks, Stuart. Correct me if I am wrong but I would need to install such a function in multiple places and that's exactly what I am trying to avoid. I did use $STACK in less involved situations before and it is very useful in its own right.
go to post Anna Golitsyna · Aug 8 Thanks, Timo. I used this profiling utility before and it's very good for its purposes but now I am interested in sequence of function calls and MONLBL does not provide that.
go to post Anna Golitsyna · Aug 7 As far as I understand, this is to examine the stack in a predetermined piece of code. I have used it in this capacity as well, but now I'd like a recording without explicitly calling stack in each involved function.
go to post Anna Golitsyna · Jul 9 Very good and customizable TRY {s ex= ##class(%Exception.General).%New("test",1,data1,data2) throw ex}CATCH ex {d ex.Log()}
go to post Anna Golitsyna · Jul 3 I have a GCMP crash when trying to compare two globals. Perhaps my input to prompts is not 100% correct. Could you or anyone else post an example of prompt answers?
go to post Anna Golitsyna · Jun 9 Thanks a lot everybody for your input. I need a bit more time to mark your replies as answers but I will do that.
go to post Anna Golitsyna · Jun 3 Yes, I use that too occasionally. I think Portal functionality is faster though.
go to post Anna Golitsyna · Jun 3 Thanks a lot! I successfully tested both and one correction: the date is not in MUMPS format. It works with the 06/03/2025 format though.
go to post Anna Golitsyna · Apr 12 I did not try it myself, but I talked to other people and searched more, and it seems that using VS Code (as opposed to Iris/Cache Studio) combined with Copilot is currently the best available way of incorporating AI into ObjectScript/MUMPS coding: Coding InterSystems ObjectScript with AI Copilot. @Evgeny Shvarov, would you agree? Would you like to add anything on the discussion subject?
go to post Anna Golitsyna · Feb 5 I will have time to prepare such a snippet tomorrow, sorry. Meanwhile, it's not necessarily one line off but up to several lines off, a few routines only. In your code, is it possible to extract text of the line for which tokens are calculated? I looked around and did not see such a possibility.
go to post Anna Golitsyna · Feb 5 I have an odd problem. In vast majority of cases globals are defined by your code correctly. However, for some routines the lineNum as returned by GetNext is one line count off and the global with the stated token attributes is actually on the next line. I tried to slightly modify such routines and recompile, but it did not always help. Any advice?
go to post Anna Golitsyna · Feb 5 Excellent, just excellent. It did find correctly all globals in a routine (no indirection). I populated in = ##class(%Stream.TmpCharacter).%New() with this code:S NumLines=^ROUTINE(routineName,0,0) ; Omit extensionF n=0:1:NumLines { S line=$T(@routineName+n^@routineName) D in.Write(line),in.Write($c(13,10))}D in.Rewind() I also added this after your Write: Set line=$G(^ROUTINE(rtnName,0,lineNum+1)) Write $C(9),$E(line,token.p+1,token.p+token.c),!I did not try finding globals in classes, but I assume this would be very similar. Is there any online documentation that shows that token value for globals is 18? Would be curious about other token values.