我有一个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