我在調試一個開源庫,該庫有一個在加載時被初始化的結構。其中一個結構的成員是一個函數指針。什麼是最快的方法來確定它指向哪個功能?例如,如果我打印出函數指針的值,是否有一些工具可以用來查找函數的名稱?我在嵌入式Linux系統上執行此操作,並且GDB不可用(尚未)。這個地址指向哪個函數?
2
A
回答
5
鏈接器可以輸出一個映射文件。假設你的功能不移動,你可以在那裏查找地址。生成地圖文件的選項可能會有所不同;在我的Mac上它是-map
,Linux man page表示它是-Map
。
除此之外,如果您沒有工作源代碼級調試解決方案,您應該做的第一件事情是得到一個。停止所有其他工作,直到您擁有適合開發的基礎設施。您可能必須努力說服您的管理層認爲這很重要,但希望您能讓他們理解。
1
我認爲你會發現addr2line command有用。
相關問題
- 1. 「&ref_var」指向哪個地址?
- 2. 指向成員函數的C++函數指針 - 它接收哪個地址?
- 3. 哪個地址和自我指向?
- 4. 指向下一個地址
- 5. 這個函數指針如何不能指向一個函數?
- 6. 用指針指向某個地址c#
- 7. 這個指針和成員函數的地址
- 8. 驗證函數指針指向函數的地址。 CMockery
- 9. 函數指針地址(C++)
- 10. 函數的兩個地址
- 11. 哪一個「這個」是指?
- 12. 程序集地址指向一個地址
- 13. 指針指向哪個數據類型?
- 14. 函數指針指向一個函數指針的函數
- 15. GMail:這個listserv電子郵件地址是哪個電子郵件地址?
- 16. 這個指針數組指向什麼?
- 17. 爲什麼這個搜索函數返回一個指向指針的指針?
- 18. 分割錯誤。爲什麼這個指針指向無效地址?
- 19. 使用另一個指針指向地址的指針C
- 20. 從一個函數返回一個數組地址到一個指針(C++)
- 21. 返回一個函數改變指針地址,地址保持不變
- 22. C++通過函數指針指向另一個函數指針
- 23. 在gdb中找到哪個函數導致「地址越界」
- 24. 哪個對象指向「this」?
- 25. 如何定義一個指向端口地址的指針
- 26. 指向一個地址的指針我沒想到
- 27. 雙指針指向同一個堆領域的隨機地址
- 28. 指向一個IP地址的多個域?
- 29. 鑄造一個指向浮動或指向一個函數指針參數
- 30. 如何將指針指向的地址分配給另一個本地指針
我擁有的地址是共享庫中的一個函數。我猜我需要得到庫的基地址並從指針中減去它。獲取共享庫的基址的最簡單方法是什麼? – waffleman
您是否嘗試過addr2line?它應該追逐由可執行文件引用的共享庫並提出一個答案... – Nemo