gpt4 book ai didi

c++ - qtcreator + gdb,扩展宏定义

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:44 24 4
gpt4 key购买 nike

我使用 QtCreator 和 gdb 7.7。我有一个示例宏:

#define getMax(a,b) ((a) > (b) ? (a) : (b))

然后在代码的某处设置一个断点,当使用该宏时:

break at line: x = getMax(v, z);

是否可以在调试过程中看到展开的宏?

Edit1 如何检查变量的值,例如 func## Index or curr after expanded following macro:

#define WRAPABLE_HND_FUNCTN(func, ...)                      \
{ \
enum { num = func ## Index }; \
unsigned int curr = mCurrFunction[num]; \
while (mCurrFunction[num] < mInterface.size () && \
!mInterface[mCurrFunction[num]].enabled[num]) \
++mCurrFunction[num]; \
if (mCurrFunction[num] < mInterface.size ()) \
{ \
mInterface[mCurrFunction[num]++].obj-> func (__VA_ARGS__); \
mCurrFunction[num] = curr; \
return; \
} \
mCurrFunction[num] = curr; \
}

当我执行 print handleEventIndex(这是 func## Index)时,我得到:

554print handleEventIndex
&"print handleEventIndex\n"
~"$2 = CompScreen::handleEventIndex"
~"\n"
554^done

对于 print curr 我得到:

555print curr
&"print curr\n"

&"No symbol \"curr\" in current context.\n"
555^error,msg="No symbol \"curr\" in current context."

最佳答案

您需要在完整的宏支持下编译您的程序:

g++ -ggdb3

在 Qt Creator 上调试时,启用调试器日志 View 并在结果控制台中键入以下内容:

macro expand getMax(v, z)

有关 GDB Manual 的更多信息.

关于c++ - qtcreator + gdb,扩展宏定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26650587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com