LUFA Library 110528
Debugging Macros

Convenience macros to aid in debugging applications. More...

Defines

#define JTAG_DEBUG_POINT()   __asm__ __volatile__ ("NOP" ::)
#define JTAG_DEBUG_BREAK()   __asm__ __volatile__ ("BREAK" ::)
#define JTAG_DEBUG_ASSERT(Condition)   MACROS{ if (!(Condition)) { JTAG_DEBUG_BREAK(); } }MACROE
#define STDOUT_ASSERT(Condition)

Detailed Description

Macros to aid debugging of a user application.


Define Documentation

#define JTAG_DEBUG_ASSERT (   Condition)    MACROS{ if (!(Condition)) { JTAG_DEBUG_BREAK(); } }MACROE

Macro for testing condition "x" and breaking via JTAG_DEBUG_BREAK() if the condition is false.

Note:
This macro is not available for all architectures.
Parameters:
[in]ConditionCondition that will be evaluated.
#define JTAG_DEBUG_BREAK ( )    __asm__ __volatile__ ("BREAK" ::)

Defines an explicit JTAG break point in the resulting binary via the assembly BREAK statement. When a JTAG is used, this causes the program execution to halt when reached until manually resumed.

Note:
This macro is not available for all architectures.
#define JTAG_DEBUG_POINT ( )    __asm__ __volatile__ ("NOP" ::)

Defines a volatile NOP statement which cannot be optimized out by the compiler, and thus can always be set as a breakpoint in the resulting code. Useful for debugging purposes, where the optimiser removes/reorders code to the point where break points cannot reliably be set.

Note:
This macro is not available for all architectures.
#define STDOUT_ASSERT (   Condition)
Value:
MACROS{ if (!(x)) { printf_P(PSTR("%s: Function \"%s\", Line %d: "   \
                                                                "Assertion \"%s\" failed.\r\n"),     \
                                                                __FILE__, __func__, __LINE__, #Condition); } }MACROE

Macro for testing condition "x" and writing debug data to the stdout stream if false. The stdout stream must be pre-initialized before this macro is run and linked to an output device, such as the microcontroller's USART peripheral.

The output takes the form "{FILENAME}: Function {FUNCTION NAME}, Line {LINE NUMBER}: Assertion {Condition} failed."

Note:
This macro is not available for all architectures.
Parameters:
[in]ConditionCondition that will be evaluated,