【问题标题】:OSX gobjdump corrupts executableOSX gobjdump 损坏可执行文件
【发布时间】: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.

【问题讨论】:

    标签: macos objcopy


    【解决方案1】:

    改用dsymutil 怎么样?

    $ xcrun dsymutil binfile -o binfile.dSYM
    

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

    【讨论】:

    • 感谢您提供此选项。但是在此之后如何从 binfile 中删除符号?截至目前,我无法测试这是否有效,因为调试符号仍在 binfile 中。
    • 谢谢@Droppy。看起来 gobjcopy 运行不正常。 strip 命令效果很好。剥离 -S 二进制文件
    猜你喜欢
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    相关资源
    最近更新 更多