* [edk2-devel] [Question] How to get debug or release information in codes.
@ 2019-05-02 2:55 krishnaLee
2019-05-02 10:03 ` Laszlo Ersek
0 siblings, 1 reply; 2+ messages in thread
From: krishnaLee @ 2019-05-02 2:55 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 871 bytes --]
Hi,
I want to add some memory leak test in only in a module's debug mode,
if "build -p xxx.dsc -m xxx.inf -b DEBUG", the memoryleak test will work,
if "build -p xxx.dsc -m xxx.inf -b RELEASE", no memoryleak test.
/* the added codes for test only in debug mode. */
#ifdef _DEBUG
#define AllocateZeroPool(x) LogMalloc(x)
#define FreePool(x) LogFree(x)
#define CHECK_MEMORY_LEAK(CheckPoint) CheckLogForMemoryLeak(CheckPoint)
#else
#define CHECK_MEMORY_LEAK(CheckPoint)
#endif // _DEBUG
the question is how to bind "_DEBUG" to debug-build-mode?
and I found something in ShellPkg.dsc,some API have both debug and release implementation for this,is this the only way?
!if $(TARGET) == RELEASE
DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
!else
DebugLib|MdePkg/Library/UefiDebugLibConOut/UefiDebugLibConOut.inf
!endif
thanks,
Krishna.
[-- Attachment #2: Type: text/html, Size: 1357 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [edk2-devel] [Question] How to get debug or release information in codes.
2019-05-02 2:55 [edk2-devel] [Question] How to get debug or release information in codes krishnaLee
@ 2019-05-02 10:03 ` Laszlo Ersek
0 siblings, 0 replies; 2+ messages in thread
From: Laszlo Ersek @ 2019-05-02 10:03 UTC (permalink / raw)
To: devel, sssky307
On 05/02/19 04:55, krishnaLee wrote:
> Hi,
>
>
> I want to add some memory leak test in only in a module's debug mode,
> if "build -p xxx.dsc -m xxx.inf -b DEBUG", the memoryleak test will work,
> if "build -p xxx.dsc -m xxx.inf -b RELEASE", no memoryleak test.
>
>
> /* the added codes for test only in debug mode. */
> #ifdef _DEBUG
> #define AllocateZeroPool(x) LogMalloc(x)
> #define FreePool(x) LogFree(x)
> #define CHECK_MEMORY_LEAK(CheckPoint) CheckLogForMemoryLeak(CheckPoint)
> #else
> #define CHECK_MEMORY_LEAK(CheckPoint)
> #endif // _DEBUG
>
>
> the question is how to bind "_DEBUG" to debug-build-mode?
>
>
> and I found something in ShellPkg.dsc,some API have both debug and release implementation for this,is this the only way?
> !if $(TARGET) == RELEASE
> DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
> !else
> DebugLib|MdePkg/Library/UefiDebugLibConOut/UefiDebugLibConOut.inf
> !endif
IIRC one approach is to declare a new Feature PCD in your package DEC
file (default FALSE), and set it to TRUE in the platform DSC if
$(TARGET) is NOOPT or DEBUG.
In the module source code, you can use FeaturePcdGet() to gate the
memory leak test.
When building for RELEASE, the debug code should be eliminated at build
time (because FeaturePcdGet() can be evaluated at compile time).
The same works with Fixed-at-Build PCDs, if you need integer values to
gate the debug logic.
MdePkg.dec has several examples:
- PcdVerifyNodeInList
- PcdValidateOrderedCollection
- PcdMaximumUnicodeStringLength
- PcdMaximumAsciiStringLength
- PcdMaximumLinkedListLength
Thanks
Laszlo
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-05-02 10:03 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-05-02 2:55 [edk2-devel] [Question] How to get debug or release information in codes krishnaLee
2019-05-02 10:03 ` Laszlo Ersek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox