我有一個C可執行文件,想知道可執行文件中是否存儲了有關它編譯的文件的信息,如果有的話,如何訪問這些信息?我正在使用RedHat Linux 6.您可以從C可執行文件中提取有關從哪個源文件編譯的信息?
0
A
回答
1
如果您的程序已經編譯了調試信息,那麼是的,這是可能的。
例如,我編譯test.c
與gcc -ggdb3 test.c -o test
然後,gdb ./test
:
(gdb) info functions
All defined functions:
File main.c:
int main(int, char **);
Non-debugging symbols:
0x0000000000400370 _init
0x00000000004003a0 [email protected]
0x00000000004003b0 [email protected]
0x00000000004003c0 _start
0x00000000004003f0 deregister_tm_clones
0x0000000000400420 register_tm_clones
0x0000000000400460 __do_global_dtors_aux
0x0000000000400480 frame_dummy
0x00000000004004d0 __libc_csu_init
0x0000000000400540 __libc_csu_fini
0x0000000000400544 _fini
(gdb) info sources
Source files for which symbols have been read in:
/home/john/Projects/test/main.c, /usr/include/bits/sys_errlist.h, ...
Source files for which symbols will be read in on demand:
1
這完全取決於體系結構,以及是否可執行文件在調試模式下(或類似的)編譯。例如,UNIX系統將調試信息(包括文件名)嵌入到可執行文件本身中,而Windows將信息存儲在單獨的文件中(即,myprog.exe
與所有調試信息相對應的myprog.pdb
)。
+0
代碼沒有編譯調試模式。 – Joshua
+0
在這種情況下,它可能沒有任何源文件名。 –
相關問題
- 1. 您可以從C++ Lib文件中獲取信息,例如如何從Jar文件中獲取信息?
- 2. 從c#中的可執行文件中提取文件
- 3. 從編譯的可執行文件獲取編譯器選項?
- 4. 從.pro編譯可執行文件
- 5. 哪些類型的可執行文件可以反編譯?
- 6. 編譯的C文件不可執行
- 7. 哪個PO編輯器可以從樹枝文件中提取消息?
- 8. 從可執行文件中獲取圖標信息?
- 9. 在C++可執行文件中存儲了多少源信息
- 10. 從哪裏可以獲得有關Firefox的源文件:主頁?
- 11. 哪個提交可執行文件
- 12. 從DOS MZ可執行文件讀取調試信息
- 13. 雙擊編譯C++ Unix可執行文件無法打開現有文件來讀取信息
- 14. 錯誤,同時執行從可執行jar文件中提取的源代碼
- 15. C#是否可以從文件中獲取信息 - 誰創建文件?
- 16. 如何使用C++獲取有關Windows可執行文件(.exe)的信息
- 17. 從可執行文件JAR中的res文件夾中提取文件
- 18. 如何從中編譯可執行文件的語言?
- 19. Powershell,從文本文件提取信息
- 20. 從Matlab運行C可執行文件
- 21. 從哪裏可以獲得可執行文件在linux上
- 22. 從SSIS XML文件中提取信息?
- 23. 從HTML文件中提取信息
- 24. ColdFusion:從.msg文件中提取信息
- 25. 從Global.ascx文件中提取信息
- 26. 如何從文件中提取信息
- 27. 從文件中提取信息
- 28. 從文件中提取信息
- 29. 從prop文件中提取信息
- 30. 如何將C文件編譯爲可執行文件(.exe)?
到目前爲止您嘗試了什麼?我會使用''strings''和''ldd''和一些猜測我自己 – Vorsprung