有哪些可以查看COFF(Windows .obj目标文件)的浏览器?

13

我只知道两个:

  • dumpbin,它与Visual Studio一起提供
  • PEView,来自wjradburn.com
3个回答

4

DbgHelp 是一组 API,本质上是一个库,而不是查看器。然而,Binutils 在你回答的当时已经能够处理 COFF 文件,只要在构建过程中配置了支持 COFF 的工具即可。现在,LLVM 还提供了查看 COFF 文件的工具。 - 0xC0000022L

1

0

嗯,很奇怪这个选项没有被提到过,但是使用支持COFF格式和目标架构的Binutils绝对能够显示COFF文件内容(在你提问的时候就已经可以了)。

这包括像nmobjdump以及-- 根据你尝试做什么来确定 -- 也有stripobjcopyld等工具。

如果你想要非常详细的信息llvm-readobj或许是最接近你所寻找的,它非常详细和描述得很好;至少如果你对COFF文件的大致内容有一定的了解的话。

另一方面,LLVM 还带来了 Binutils 工具的克隆版本,但前缀为 llvm-。因此,您可能会找到 llvm-objdumpllvm-objcopyllvm-stripllvm-nm 等工具。

在现代版的 Visual Studio(自 VS2019 以来,如果我没记错),您可以从 Visual Studio Installer 安装完整的 Clang/LLVM 工具链,其中包含这些工具--否则,也可以在 Clang/LLVM 项目网站 上找到预打包的工具链。

Binutils 和 LLVM 也完全能够处理库管理器 (lib.exe) 生成的 .lib 文件格式;ar 和 7-Zip 可用于解包它们。如果您需要某些高级功能来操作对象文件或库,则可能需要查看 objconv

荣誉提及:一些十六进制编辑器,例如ImHex,也具有显示COFF文件更结构化视图的能力。

LLVM提供的llvm-cxxfilt.exe在LLVM16.0版本之前仍然无法正确地解析一些符号。有时候人们仍然需要使用undname.exe来进行解析。 - ChrisZZ
@ChrisZZ 有趣啊。你有例子吗? - 0xC0000022L
1
我在LLVM存储库中创建了一个问题:https://github.com/llvm/llvm-project/issues/63342。我使用“无法解析某些符号”来描述输入和输出的情况,即llvm-cxxfilt.exe的符号名称相同,而不是C/C++代码名称。 - ChrisZZ
1
我在LLVM仓库中提出了一个问题:https://github.com/llvm/llvm-project/issues/63342。我使用“无法解析某些符号”来描述llvm-cxxfilt.exe的输入和输出相同的情况,即符号名称相同,而不是C/C++代码名称。 - undefined
1
我正在编写一个ODRV(一条规则定义违规)检测工具,并且想要知道每个符号对应的C/C++代码。对于我的情况,每个未能解析的符号可能是ODRV的源头。对于其他情况,要求就不那么严格了。0xC0000022L - ChrisZZ
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接