2011-06-08 33 views
0

我有一個C程序(出於很好的理由)分配內存,將一些代碼複製到它,使用mprotect()賦予其執行權限,然後調用該代碼。 是的,我知道這是不可移植和不安全的,但有一個很好的理由。 無論如何,我需要通過彙編代碼(使用si命令)單步執行gdb,但它不會讓我 - 它一直說: 「沒有函數包含所選幀的程序計數器」如何強制GDB執行沒有符號的代碼

Is there一種強制gdb執行此代碼的方法?是否有另一個調試器,我應該使用這種類型的東西?

謝謝!

回答

1

好像你想要add-symbol-file', or add-symbol-file-from-memory命令 讓gdb知道已經複製到那個存儲位置的代碼。

0

stepi命令本身不需要任何符號,應該在你描述的場景中工作就好了(雖然我沒有真正檢查它是否確實)。

是你的問題真的stepi?顯示調試會話的相關部分可能會打開您的問題以獲得更好的答案。

1

您應該能夠在開始到si/stepi之前使用display/i $pc來關注您的代碼。這告訴它在每次打印提示之前顯示當前指令的反彙編。