2010-05-29 21 views
-1

可能重複:
use callback function to report stack backtrace從eip地址確定運行函數的名字?

給出一個void * EIP和包含地址結構函數符號的數組,符號名和文件中的所有函數符號的結合,我該如何確定在發生錯誤時運行的功能?

+0

@WhirlWind絕對是一個愚蠢的 - 甚至相同的用戶。 – 2010-05-29 05:09:56

+0

在Linux上,搜索名爲addr2line的工具:http://stackoverflow.com/questions/3151779/how-its-better-to-invoke-gdb-from-program-to-print-its-its-stacktrace/4611112#4611112 – karlphillip 2011-01-06 02:09:54

回答

1

如果執行模塊在運行時沒有重新定位,那麼可以嘗試檢查您的EIP是否位於函數符號中的兩個函數地址之間。

+0

即使它被重新定位,操作系統也會提供一種方法來檢索重定位偏移量,並且在關閉EIP後可以完成同樣的事情。 – 2010-11-16 00:08:43