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

问题描述 投票:0回答:1

我正在使用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?

eclipse gdb
1个回答
3
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.