[轉]GDB調試遇到堆棧 ???的情況


轉自[http://hi.baidu.com/gooooner/blog/item/d57444d6c4f8e0c850da4b42.html]
   
用GDB調試有時會遇到堆棧全是“???”的情況,對調試帶來很大麻煩。下面介紹一種方法能夠顯示該線程的調用棧信息(以64位系統為例介紹)。
     (1)thread apply all bt,查看所有的線程的棧信息。
     (2)t 編號,跳到指定的線程。跳到問號線程,bt會看到一堆“???”。
     (3)執行x/10aw $rbp,會顯示出該線程的最后一幀的棧地址指向的內容:上一幀棧地址,rip對應的代碼。
     (4)x/10aw 棧地址,顯示出上一幀的棧地址和rip對應的代碼。
     (5)重復(4),可以得到完整的調用棧。
     在32位系統下也可以用這個方法得到調用棧。32位系統中與64位系統中rpb對應的寄存器為ebp。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM