2011-07-21 93 views
0

我正在進行調試並希望檢查變量值的變化位置。爲此,我嘗試通過類似watch'structure-> somefunc.getvalue()'的方式設置一個觀察點,其中不是一個簡單的變量(可能是調用函數的更大結構的一部分)。當我這樣做時,gdb在當前上下文中說無符號'structure-> somefunc ..'。當我在同一個目錄中執行grep時,我得到3 -4個相同表達的實例。我錯過了什麼?無法在GDB中設置觀察點

回答

1

我錯過了什麼嗎?

是的,你的出現至少是缺少一兩件事情:

  • 表達structure->somefunc.getvalue()不作任何 感。你大概意思some_variable->some_field.getvalue()

  • 對於表達是有效的,你必須some_variable存在的上下文。 some_variable顯示在grep輸出的事實並不意味着GDB可以當前評估它。它可能能夠評估它您停止正確的上下文中的程序。

  • 設置返回值爲getvalue()的觀察點是沒有意義的(也是不可能的)。如果您可以指定要觀看的內存位置,則觀察點纔有意義。如果(很可能)getvalue()返回類似this->m_value的東西,那麼你真正想要的是設置一個觀察點*(&some_variable->some_field.m_value)