2013-08-18 124 views
0

所以我試圖調試代碼。但由於某種原因,它沒有通過我所需要的部分。調用這段代碼的控制變量是一個指針「* sret」。我嘗試了很多,但沒有運氣。它是一個C程序。有沒有辦法讓一個觀察點附加在變量上?因爲它不會識別變量......但它能識別文件。將totalview調試器附加到變量

回答

0

@Ban,

如果您使用的是TotalView調試器,那麼這是一個很好的問題。是的,我們確實提供觀察點。但是,它們設置在內存位置,而不是變量。這個區別很重要,因爲如果你想象一個遞歸調用的函數和該函數中的局部變量X.你可以運行該程序到該功能,在X上潛水並設置一個觀察點。如果X的特定實例(指向堆棧中的內存位置)被寫入,則觀察點將觸發。例如,如果函數再次調用自己(這有效地在堆棧中的不同位置創建一個新的,不同的X),並且第二個X被寫入,我們不會停止。

其他一些功能,你可能會發現有用:

  • 您可以在調試器中直接設置的變量的值。您可以使用它來驗證如果變量具有「正確」值,程序將按照您的預期行事。

  • 您可以通過指令逐步執行指令,使其指向您希望它決定沿着您正在尋找的代碼路徑的程序部分。顯示源代碼和彙編代碼對於這種調試非常有用。

  • 如果您在linux-x86-64平臺上,您可能會發現ReplayEngine功能很有用。這可以讓你通過程序向前和向後運行 - 這可能會幫助你真正縮小發生的情況,以防止你的程序做你想做的事情。

讓我知道你如何繼續調試這個問題。如果您以其他方式找到您的解決方案,我也會對此感到好奇。

祝你好運!

克里斯Gottbrath

首席產品經理TotalView軟件在Rogue Wave的軟件

電子郵件:去年在roguewave點com第一點