1)首先我想知道,如何解碼這樣的變量?在GDB中優化值:gdb可以自動解碼它嗎?
我知道這個問題的解決方案,刪除優化標誌,使其不穩定,我不想做這一切。有沒有解決方案可以完成而無需再次編譯源代碼?問題是,每當我做出任何更改,需要很長時間才能編譯,所以我不想用不同的優化標記進行編譯,也嘗試了一次更改優化標記,但由於編譯標記的更改而崩潰我無法理解。
此外,當我做「info reg」時,我無法找到有關了解各種寄存器的文檔。我期待着一些變量(我知道它的價值,它會是什麼),但信息註冊表顯示我所有不同的價值。我在這裏錯過了一些東西。我正在使用的體系結構是x86_64
2)我想知道gdb在解碼這些寄存器變量時面臨的限制是什麼?或者這個問題已經被某人解決了。我已經閱讀了很多經過彙編代碼的地方,你可以找出哪個變量在該寄存器中。如果那是真的,爲什麼它不能被構建到gdb中。如果有解決這個問題的請給我指點相關頁面
這裏唯一的問題是「我想知道什麼是限制」和「請指點我的相關頁面」。你還沒有描述過一個問題,這些都是非常模糊和開放式的問題,並不能真正解決問題。其他人可能會不同意,但我正在投票結束。 – abelenky
對不起,我不明白。我的基本問題是如何找出經過優化的變量的值。我知道這個問題的解決方案,刪除優化標誌,使其變得不穩定,我不想做所有這些。有沒有解決方法可以在不編譯源代碼的情況下完成?您可以假設該庫是我無法訪問的第三方代碼。我還應該描述什麼?那肯定會有一些gdb面臨的問題,因爲它不能顯示這樣的變量。這就是我所說的「限制」。 – avd
你的評論是MILES遠離你原來的職位。在你的評論中,你問:「我如何找出這樣一個優化出來的變量的值?」。 (這是一個真正的問題,不像你原來的帖子)。 你也描述了這些限制(「圖書館是我沒有訪問權限的第三方代碼」「是否有任何解決方案可以在不編譯源代碼的情況下完成?」),您在原始文章中忽略了這些限制。我建議你編輯你的問題以包含這些信息。 – abelenky