2013-01-04 68 views
0

有沒有一種方法可以爲可執行文件生成一個C++方法列表?我有一個動態庫,並希望查看從可執行文件中調用了多少個方法。我可以看到C++方法正在通過dumpbin或readelf導出。但是,當我在調用動態庫的可執行文件上運行這些工具時,僅列出了C方法和一個C++方法。 C++導入有什麼特別之處嗎?生成從可執行文件調用的C++方法列表

+1

幾乎任何體面的(甚至是蹩腳的)探查器都應該能夠告訴你。如果你想要一個可能被調用的列表,那麼可執行文件的導入表應該會告訴你(至少現在,這聽起來像你正在查看導出,而不是導入)。 –

+0

看起來像是在代碼覆蓋測試或某種分析之後。工具存在這樣做。 –

+0

是的我正在嘗試做類庫的代碼覆蓋測試。此時,我對運行時的代碼覆蓋率不太感興趣,所以我想看看能否用dumpbin或readelf快速執行某些操作,但似乎不可能使用這些工具? –

回答

0

您可以使用分析技術,例如用-pg標誌傳遞給gcc(並在鏈接時)編譯整個程序,然後使用gprof。 (也有oprofile)。

您可以使用ltrace來了解完成的庫調用。

您可能也對這個article about reverse engineering tools感興趣。

1

您可以通過分析構建庫和程序,然後可以獲取所有調用函數(以及每個函數花費多少時間)的列表。

您還可以添加手動跟蹤日誌記錄,這意味着您可以添加在每個函數的開始和結束處寫入控制檯的調用。

分析可能是最簡單和最簡單的方法。查看here以瞭解建築時所需的選項,例如here獲取提取信息所需的程序gprof的手冊。