2010-05-05 79 views
52

現在我一直在使用GDB反彙編一個二進制文件,並檢查出不同的寄存器和什麼。有沒有簡單的命令來檢查堆棧中的所有內容?這可以限制在一個函數中的所有內容嗎?如何使用GDB檢查堆棧幀?

+2

這應該是對你有所幫助:http://cs.nyu.edu/courses/spring07/V22.0474-001/misc/gdb-refcard.pdf。您始終可以使用「幀」命令在幀之間跳轉。 – dicaprio 2010-05-05 05:58:38

回答

55

對於當前堆棧幀:

  • 信息幀列出關於幀(其中東西存儲器啓動等)
  • 信息ARGS列表函數的自變量一般信息
  • info locals列出存儲在幀中的局部變量
38
  • bt(或backtrace)會給你一個調用堆棧。

  • frame <args>會給你關於堆棧中特定幀的信息。

  • info locals可以給你關於棧上任何局部變量的信息。

74

可以與x/10x $sp

此查看堆棧的內容將打印堆棧頂部的10個元素。

+0

這是什麼版本的GDB?我不能讓GDB使用寄存器作爲命令參數的GDB 7.7-0ubuntu3.1 – nightpool 2014-11-14 16:36:13

+1

我@nightpool適用於7.7.1-0ubuntu5〜14.04.2 – 2015-07-10 19:20:33

+0

這是答案告訴你如何實際看堆棧中的字節框架,我有一些麻煩找出如何做。謝謝! – 2017-09-12 11:35:00