Warning: this topic talks about using shared memory manager only. If you do not share memory manager between modules - then you can use any memory manager in any combinations without limitations.
EurekaLog is compatible with shared memory manager from FastMM. EurekaLog is not compatible with other implementations of shared memory manager. Therefore, if you're using shared memory manager - then you must select (and follow) one of the following scenario:
In other words, you can't have shared memory manager and different settings for "Enable extended memory manager" option in several modules. Consider enabling "Enable extended memory manager" option as using another memory manager. Obviously, in order to use shared memory manager, you must use the same memory manager in all modules. That's why you can't have different settings for "Enable extended memory manager" option.
If you're not using shared memory manager - then "Enable extended memory manager" option can be set differently for each individual module. Also, "Share memory manager" and "Use existing shared memory manager" options should be unchecked.
Using together EurekaLog and FastMMIf you're not using shared memory manager - you can mix FastMM and EurekaLog in your modules in any combination.
If you're using shared memory manager - you must enable "ShareMM" option for FastMM for non-EurekaLog modules (please, refer to FastMM's documentation) and you must enable both "Enable extended memory manager" and "Share memory manager" options for EurekaLog's modules. With these settings - you can mix FastMM and EurekaLog in your modules in any combination.
Warning: do not enable "ShareMM" option in FastMM for EurekaLog's modules (in case you use both FastMM and EurekaLog in the same module), unless you disable "Enable extended memory manager" option.
Since EurekaLog is compatible with FastMM - you can (for example) compile .exe with EurekaLog and both "Enable extended memory manager" and "Share memory manager" options checked; and you can compile DLL with FastMM and "ShareMM" option enabled (and without EurekaLog). This will work, and application will use EurekaLog's debugging features if .exe is initialized first. However, if you statically link DLL to .exe - DLL will be initialized first and FastMM will be used as application's memory manager. Thus, EurekaLog's memory debugging capabilities will be disabled.
To always use EurekaLog's memory manager:
or
or
Note: if you're using both EurekaLog and FastMM in the same project - be sure to list FastMM's unit first and EurekaLog's unit seconds in uses clause of main .dpr file - regardless of options set.
Using together EurekaLog and DelphiStarting with Delphi 2007 - there are standard AttemptToUseSharedMemoryManager and ShareMemoryManager functions, which you can use for sharing memory manager. These functions are wrappers for FastMM's sharing functionality (which is a standard memory manager since Delphi 2006).
Thus, this case is the same as "Using together EurekaLog and FastMM", but instead of FastMM and setting "ShareMM" option you should use ShareMemoryManager function.
Warning: if you're using ShareMemoryManager function and EurekaLog in the same project - be sure to disable "Enable extended memory manager" option.
Note: if you're using both EurekaLog and ShareMemoryManager function in the same project - be sure to call ShareMemoryManager function before running EurekaLog's units. You can do this by including unit which calls ShareMemoryManager function in its initialization section. You must list this unit before any EurekaLog's units in uses clause of main .dpr file - regardless of options set.
Usually you use EurekaLog with both "Enable extended memory manager" and "Share memory manager" options checked for executable, and you use ShareMemoryManager function for dynamically loaded DLLs.
Using together EurekaLog and SimpleShareMemSimpleShareMem is wrapper for AttemptToUseSharedMemoryManager and ShareMemoryManager functions (see above).
Thus, this case is the same as "Using together EurekaLog and FastMM", but instead of FastMM and "ShareMM" you should use SimpleShareMem unit.
Warning: if you're using SimpleShareMem and EurekaLog in the same project - be sure to disable "Enable extended memory manager" option.
Note: if you're using both EurekaLog and SimpleShareMem in the same project - be sure to list SimpleShareMem unit first and EurekaLog's unit seconds in uses clause of main .dpr file - regardless of options set.
Usually you use EurekaLog with both "Enable extended memory manager" and "Share memory manager" options checked for executable, and you use SimpleShareMem unit for dynamically loaded DLLs.
Using together EurekaLog and borlndmm.dll or ShareMemEurekaLog is not compatible with BorlandMM.dll and ShareMem. It's recommended to use FastMM with "ShareMM" option instead. If this is not possible - then you must disable "Enable extended memory manager" option for all your EurekaLog-enabled modules. Using of EurekaLog's debugging capabilities will be not possible.
Note: other EurekaLog's features (not memory-related) still will be accessible.
Using together EurekaLog and dynamic RTL in C++ BuilderEurekaLog is not compatible with BorlandMM.dll and dynamic RTL in C++ Builder. It's recommended to use statically-linked RTL instead. If this is not possible - then you must disable "Enable extended memory manager" option for all your EurekaLog-enabled modules. Using of EurekaLog's debugging capabilities will be not possible.
Note: other EurekaLog's features (not memory-related) still will be accessible.
Using together EurekaLog and other 3rd party memory managerEurekaLog is not compatible with other shared memory managers. It's recommended to use FastMM with "ShareMM" option instead. If this is not possible - then you must disable "Enable extended memory manager" option for all your EurekaLog-enabled modules. Using of EurekaLog's debugging capabilities will be not possible. You may only use capabilities of your shared memory manager, but not EurekaLog.
Note: other EurekaLog's features (not memory-related) still will be accessible.
What can go wrongIf you'll use wrong settings - you can get these issues:
Typical reasons for these issues include the following:
See also:
|