2009-10-17 36 views
2

我想知道是否有一個Linux工具可以讓你讀取程序堆棧的值?例如運行包含該行程序的二進制時:Linux工具讀取堆棧的值

foo(parameter); 

該參數將被放在堆棧上,我想知道是否有訪問它的工具。

謝謝。

回答

4

是的,這聽起來像你只是想運行一個調試器。如果你用-g選項編譯程序,那麼你可以使用gdb的,如:

的gdb myprogram

現在在你的函數設置一個斷點,您可以在當前範圍內查看變量的值。

如果你是C初學者,學習gdb(Gnu調試器)非常值得你花時間學習。

+2

你不需要編譯使用-g二進制。很明顯,更多的調試信息會有所幫助,但是您可以在調用堆棧中看到extern(即shared-linker-visible)函數,並讀取它們參數的數值。它的優化阻礙了調試器的使用(特別是gcc上的-fomit-stack-pointer!),而不是缺少-g。 – 2009-10-17 17:46:01