Command/Program that shows what procedures are used

rip73

New Member
I remember either a command or a program that would list all of the procedures, in order of exection, that a program used. I do not recall how or where it was run from but I remember reading the listing of procedures. I wish I could explain it more thoroughly but I am just vaguely recalling this and what I think may have been going may not quite be the reality of it. If this sounds familiar please let me know how this is executed.
 

Rob Fitzpatrick

ProgressTalk.com Sponsor
Are you looking for the current call stack? Or all the procedures run in a session?

If the former, look at the PROGRAM-NAME function, database request statement caching, or the proGetStack command.

If the latter, look at the -yx client startup parameter (stats with cross reference), which writes procedure names to a file called proc.mon. Also, the PROFILER handle may be helpful to you in constructing the call tree for your application.
 

GregTomkins

Active Member
... or COMPILE XREF / COMPILE XREF-XML. This will list subprocedures regardless of whether they are actually used or not; this may or may not be an advantage, depending on what you are doing. The big drawback of this is that you have to have compile ability (eg. requisite licence and source code).
 

TomBascom

Curmudgeon
If you are running UNIX you can also send a SIGUSR1 to the session to get a stack trace dumped to protrace.123456 (where 123456 is the PID os the session...) I used that just this morning to figure out where a program was hanging up. Very handy.
 

Rob Fitzpatrick

ProgressTalk.com Sponsor
If you are running UNIX you can also send a SIGUSR1 to the session to get a stack trace dumped to protrace.123456 (where 123456 is the PID os the session...) I used that just this morning to figure out where a program was hanging up. Very handy.

Which is what proGetStack does ;)
 

tamhas

ProgressTalk.com Sponsor
Turns out to be on p. 235 of the Debugging manual ... never heard of it either. Under the skin, it is
"%DLC%\bin\_debugConfig.exe" -getstack %1
So one wonders what other features _debugConfig might have.
 

Rob Fitzpatrick

ProgressTalk.com Sponsor
Turns out to be on p. 235 of the Debugging manual ... never heard of it either. Under the skin, it is
"%DLC%\bin\_debugConfig.exe" -getstack %1

It does that in Windows, presumably due to the lack of signals in the OS. In Unix the script just issues a kill command.

So one wonders what other features _debugConfig might have.

I ran strings on the binary and looked for stuff that looks like parameter names. Apart from -getstack, I came up with -ready, -port, and -help, which are already documented.
 

GregTomkins

Active Member
protrace.123456 (where 123456 is the PID os the session...)

TIL mere mortals (eg. people who don't work for Progress) know how to read protrace files. I tried your SIGUSR1 thing and couldn't get it to work (11.2 HPUX). Next time I see one I'll have to open it up ;)
 

Rob Fitzpatrick

ProgressTalk.com Sponsor
which are already documented.

As what? They not under the doc for proGetStack.

Sorry, I misspoke. They're documented in the help syntax of the program itself. Unfortunately, it seems the existence of that is undocumented. It should be documented, obviously.

Code:
proenv C:\DLC>_debugconfig -help
==============================================================================
  PROGRESS Debug Configuration Tool
==============================================================================
Usage: proDebugConfig [<process-id>] [-ready {yes | no}] [-port <port #>]
process-id  : process id to be configured for debugging
-ready yes / no  : enable / disable this process for debugging
-port <port #>  : specifies the port to be used for debugging
-help  : displays usage information
 

Rob Fitzpatrick

ProgressTalk.com Sponsor
TIL mere mortals (eg. people who don't work for Progress) know how to read protrace files. I tried your SIGUSR1 thing and couldn't get it to work (11.2 HPUX). Next time I see one I'll have to open it up ;)

Note that you need sufficient permission to do this. You must be the owner of the process you're sending the signal to, or root.

Did you get an error or did it fail silently?
 
Top