OSX gobjdump 损坏可执行文件

Posted

技术标签:

【中文标题】OSX gobjdump 损坏可执行文件【英文标题】:OSX gobjdump corrupts executable 【发布时间】:2014-12-12 12:30:56 【问题描述】:

我正在尝试在 Windows 上创建等效的 pdb 文件,以使用单独的调试信息文件进行构建。 我安装并尝试使用 gobjdump 从一个小型 hello world 程序(testDebugging)中删除调试信息。我使用 eclipse 构建了代码,二进制文件运行良好。

我运行 gobjcopy --strip-debug testDebugging 的那一刻,二进制文件的大小减小了。但是当我现在尝试运行二进制文件时,它失败了 "-bash: ./testDebugging: Malformed Mach-o 文件"

即使打开了详细选项,也没有错误消息。 关于为什么这样的基本功能被破坏的任何指示? 版本信息:GNU objcopy (GNU Binutils) 2.24

man 命令如下。

。 “foo”然后...

       1.<Run "objcopy --only-keep-debug foo foo.dbg" to>
           create a file containing the debugging info.

       1.<Run "objcopy --strip-debug foo" to create a>
           stripped executable.

       1.<Run "objcopy --add-gnu-debuglink=foo.dbg foo">
           to add a link to the debugging info into the stripped
           executable.

【问题讨论】:

【参考方案1】:

改用dsymutil 怎么样?

$ xcrun dsymutil binfile -o binfile.dSYM

(假设您使用的是 Xcode 命令行工具)。

【讨论】:

感谢您提供此选项。但是在此之后如何从 binfile 中删除符号?截至目前,我无法测试这是否有效,因为调试符号仍在 binfile 中。 谢谢@Droppy。看起来 gobjcopy 运行不正常。 strip 命令效果很好。剥离 -S 二进制文件

以上是关于OSX gobjdump 损坏可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

从 Cocoa 应用程序项目中导出 XCode 中的 OSX 可执行文件

Spring Boot 可执行 jar “无效或损坏的 jar 文件”

Tools系列Mac OSX查看可执行文件引用的动态链接库

如何在 Mac OSX 下使用 gcc 设置可执行文件的运行时路径(-rpath)?

损坏的 winapi 可执行清单

OSX 修复 Selenium Chromedriver 启动错误产生未知系统错误 -86 可执行文件中的错误 CPU 类型?