This option produces a window containing information about MrDebug. This can include operating system information, memory information and most importantly information about DGROUP.
The memory/information window is broken down into two sections: the left handside detailing the memory configuration, including DPMI, VCPI and EMS; the right hand side shows a visual representation of the 64K area of memory known as DGROUP.
About DGROUP.
DGROUP is a 64K chunk of memory that, for a Clipper program, can be broken down into five distinct sections, each serving a specific purpose, DGROUP can be easily described as a 64K block of memory that is used by Clipper as a common area of memory that Cliper and third party products can rely on to find various items of information. There are five main parts to DGROUP:
1. The MemVar table (Dynamic)
This is used to store Clipper STATIC variables and ITEMs (declared through the ITEM API) with their contents if the contents and variable/ITEM definition can be held within 14 bytes, otherwise the variable/ITEM definition is held along with a pointer to a Virtual Memory segment where the variable/ITEM contents are held.
2. DS Available (Dynamic)
This is the amount of free memory available within the DGROUP. This amount can be seen from //INFO as DS AVAIL or from the Memory/Info window. This will be reduced during the execution of the program as the Eval Stack and the Memvar table may both 'grow' into this area.
3. Eval Stack (Dynamic)
This is where Clipper LOCAL variables are held (if the variable definition and contents take up 14 bytes or less), otherwise a pointer is stored to a Virtual memory segment that contains the variable contents.
4. CPU Stack (Fixed)
The CPU stack is used to store the function return addresses each time a new function is called, as well as local 'C' variables.
The size of the CPU stack is set when you link your program. It depends upon the linker that you are using and linker specific commands that you have in the link script that might increase or reduce the stack
5. Fixed C and ASM Data (Fixed)
This area is used by other third party libraries and other languages that do not use their own data segments and use the default data segment (otherwise known to us Clipperites as DGROUP) to store fixed pieces of text and global variables used by other languages
For example, inside Clipper, the un-recoverable error messages are stored within this section of the default data segment (DGROUP).
The following screen shot represents an example of the Memory/Info window:
Please note that this does not all fit onto one screen. You may have to use the ↑ and ↓ keys to see the different parts of the left hand view.
You may note that there are circles next to some of the memory legends, traffic lights. These denote "acceptable limits".
A green traffic light would indicate that everything is normal and that you should be okay with regards to memory and therfore your program should run.
An amber traffic light would denote that memory is starting to run out and that you may expect an error of some description soon.
A red light means that you are about to run short of memory and the program is about to crash, has done or will do.
Users of Blinker may like to note that addiotnal information can be obtained from this screen by including the following functions within their code:
BLIMGRSTS (Blinker 3.00 and higher) BLIVERNUM BLISERNUM
The hot-key combination for this item is <Shift><Alt><M>.