eclipse gdb - 如何进入包含代码行的MACRO

时间:2018-02-14 17:00:06

标签: eclipse gdb

我正在使用Kinetis Design Studio, Version: 3.2.0

#define DECODE_QSTR qstr qst = 0; \
    do { \
        qst = (qst << 7) + (*ip & 0x7f); \
    } while ((*ip++ & 0x80) != 0)

当我踏入行DECODE_QSTR;时,它不会进入do-while循环。

MARK_EXC_IP_SELECTIVE();
DECODE_QSTR;
PUSH(mp_load_name(qst));
DISPATCH();

有没有办法启用包含多行代码的步进MACRO?

1 个答案:

答案 0 :(得分:3)

不,没有办法做到这一点。这可能是DWARF的限制,也可能是编译器的限制,具体取决于您的视图。

理论上,编译器可以在行表中为宏的每个相关部分发出条目。但是,我不知道有任何编译器执行此操作(这是编译器限制部分)。而且,如果它完成了,它仍然会留下如何在步进时看到宏参数的问题(DWARF没有提供任何方法来执行此操作)。

解决方法是使用内联函数,但当然并非总是可行。