mingw调试 mingw命令集 binutils gcc 抽取exe的debug信息 生成不含debug信息的exe文件

OBJ文件格式分析工具 objdump nm ar

gcc as ar objdump 等编译相关命令的使用

gcc as ld的一些笔记

关于GCC的DLLTOOL和DLLWRAP工具

WINDMC


mingw包含gcc, glibc, binutils

gcc-core 工具集

cpp.exe
gcc.exe
gcov-tool.exe
gcov.exe

gcc-g++ 工具集

c++.exe
g++.exe

make 工具集

make.exe

gdb 工具集

gdb.exe
gdbserver.exe

binutils 工具集

addr2line.exe 地址到代码行转换 转换地址004533B3到代码行: addr2line.exe -e test.exe 004533B3
ar.exe 库文件读写工具 列出libtest.a中所有对象文件(.o文件): ar t libtest.a
as.exe gnu汇编工具
c++filt.exe 转换c++符号名到原名
dlltool.exe 创建def,exp,lib文件
dllwrap.exe 创建dll, 类似gcc -shared
elfedit.exe 更新ELF头
gprof.exe 性能分析工具
ld.exe gnu链接器
nm.exe 列出对象文件符号列表 列出test.exe中所有符号列表(-s 包含索引, 哪些模块包含哪些名字的映射): nm -s test.exe
objcopy.exe 复制并转换对象文件 去掉test.exe的调试信息(重定向和符号列表): objcopy -S test.exe test_output.exe 去掉test.exe的.debug_info节(section): objcopy -R .debug_info test.exe test_output.exe
objdump.exe 显示对象文件信息 列出test.exe中所有节sections: objdump -h test.exe 列出test.exe中所有符号列表: objdump -t test.exe 显示test.exe的源码和汇编代码: objdump -S -d test.exe
ranlib.exe 生成库文件的索引
readelf.exe 显示ELF文件信息
size.exe 列出节点大小
strings.exe 显示文件的字符串
strip.exe 去除符合表
windmc.exe 读取消息定义文件(.mc)
windres.exe 读写资源文件(含rc res coff的节的文件)

将含调试信息的exe文件, 抽取出调试信息, 生成不带调试信息的exe文件

# 三个文件:
# 含debug信息的exe文件, test_debug.exe; 不含debug信息的exe文件, test_release.exe; debug信息文件, test.dbg

# 抽取test_debug.exe的debug信息到test.dbg
objcopy --only-keep-debug test_debug.exe test.dbg

# 去掉debug信息后的test_debug.exe保存到test_release.exe
objcopy --strip-debug test_debug.exe test_release.exe

# 设置test_release.exe的debug链接到test.dbg文件
objcopy --add-gnu-debuglink=test.dbg test_release.exe