2
我使用QtCreator和gdb 7.7。我有一個例子宏:qtcreator + gdb,擴展宏定義
#define getMax(a,b) ((a) > (b) ? (a) : (b))
然後在設置了斷點時使用的宏代碼的地方:
break at line: x = getMax(v, z);
是否有可能在調試過程中看到擴展的宏?
EDIT1如何檢查變量的值,例如FUNC##指數或CURR後展開下面的宏:
#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##指數),我得到:
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."
感謝它的工作,但我有另一個問題,請參閱Edit1 – Irbis 2014-10-30 11:41:56
沒有關於Edit1的想法;老實說,我從來沒有使用gdb的宏擴展。如果gdb不允許你進入宏,那麼看起來你運氣不好。在當前上下文中,錯誤「無符號」curr顯然是gdb的方式來說「我沒有在'WRAPABLE_HND_FUNCTN'上進入大括號」。 – 2014-10-30 15:49:26