[edk2-devel] [Question] How to get debug or release information in codes.

Laszlo Ersek lersek at redhat.com
Thu May 2 10:03:18 UTC 2019


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

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#39909): https://edk2.groups.io/g/devel/message/39909
Mute This Topic: https://groups.io/mt/31452690/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list