在 ./symbolicatecrash 第 115 行的 macosx SDK 或任何后备 SDK 中找不到名为“otool”的工具

Posted

技术标签:

【中文标题】在 ./symbolicatecrash 第 115 行的 macosx SDK 或任何后备 SDK 中找不到名为“otool”的工具【英文标题】:can't find tool named 'otool' in the macosx SDK or any fallback SDKs at ./symbolicatecrash line 115 【发布时间】:2016-01-26 07:44:43 【问题描述】:

我尝试使用 symbolicatecrash ~~~.crash 和 dSYM 文件分析 Apple 商店给出的崩溃 ios 应用程序崩溃日志。 但是,当我尝试制作 crash.log 时,出现以下错误。你能告诉我如何解决这个问题吗?

$ ./symbolicatecrash ~~~.crash ~~~.dSYM > crash.log

sh: ”/Applications/Xcode.app/Contents/Developer”/usr/bin/xcrun: No such file or directory
Error: can't find tool named 'otool' in the macosx SDK or any fallback SDKs at ./symbolicatecrash line 115.

以下是符号崩溃文件

#symbolicatecrash
sub getToolPath 
    my ($toolName, $sdkGuess) = @_;

    if (!defined($sdkGuess)) 
        $sdkGuess = "macosx";
    

    my $toolPath = `'$DEVELOPER_DIR/usr/bin/xcrun' -sdk $sdkGuess -find $toolName`;
    if (!defined($toolPath) || $? != 0) 
        if ($sdkGuess eq "macosx") 
            die "Error: can't find tool named '$toolName' in the $sdkGuess SDK or any fallback SDKs"; <------ This line is line115
         elsif ($sdkGuess eq "iphoneos") 
            print STDERR "## Warning: can't find tool named '$toolName' in iOS SDK, falling back to searching the Mac OS X SDK\n";
            return getToolPath($toolName, "macosx");
         else 
            print STDERR "## Warning: can't find tool named '$toolName' in the $sdkGuess SDK, falling back to searching the iOS SDK\n";
            return getToolPath($toolName, "iphoneos");
        
    

    chomp $toolPath;
    print STDERR "$toolName path is '$toolPath'\n" if $optv;

    return $toolPath;

【问题讨论】:

【参考方案1】:

1)

在命令行输入:

xcode-select --print-path

如果显示/Application/Xcode.app/Contents/Developer的路径,则转到步骤2。如果没有,请使用“sudo xcode-select -s /path/to/your/Xcode/Contents/Developer”文件夹更改路径。

2)

尝试安装 Xcode 命令行工具,您可以在 http://developer.apple.com/xcode 站点的“其他工具”链接下获得。

3)

确保您的 .tcshrc / .bashrc "$PATH" 环境变量是正确的。在我的本地计算机中,“xcrun”位于“/usr/bin”中,otool 也位于“/usr/bin”中。

【讨论】:

谢谢迈克尔! 1) $ xcode-select --print-path ”/Applications/Xcode.app/Contents/Developer” 2) $ xcode-select --install xcode-select: error: 命令行工具已经安装,使用“软件更新”安装更新 3) $ which xcrun /usr/bin/xcrun $ which otool /usr/bin/otool 在这种情况下,我应该更新软件(Xcode)吗? 可能不会受到伤害。到今天为止,我们已经升级到 Xcode 7.1。另外,请仔细查看错误。它正在寻找一个名为“$DEVELOPER_DIR”的环境变量。看起来它应该是空白/空的,就像它在我的机器上一样(然后你的“/usr/bin/otool”将正确解析以重新符号化).. 顺便说一句,我已将 DEVELOPER_DIR 设置如下。导出 DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer" 在你的symbolicatecrash 脚本中搞砸了这一行:my $toolPath = '$DEVELOPER_DIR/`。也许你应该修改你的脚本? 我用bash(在我使用zsh之前)尝试过相同的操作,然后成功了!!!也许,.zshrc的PATH问题【参考方案2】:

我已经尝试过 bash 的相同操作(在我使用 zsh 之前),然后运行良好。看来问题是由.zshrc的设置引起的。

【讨论】:

你能解释一下吗? 我用 bash 尝试过同样的操作(在我使用 zsh 之前), 我不明白你说你之前使用过 zsh..但是我该如何使用呢? 感谢任何帮助让我知道

以上是关于在 ./symbolicatecrash 第 115 行的 macosx SDK 或任何后备 SDK 中找不到名为“otool”的工具的主要内容,如果未能解决你的问题,请参考以下文章

强制 symbolicatecrash 使用特定的 .app 和 .dSYM 文件?

symbolicatecrash 找不到任何符号

symbolicatecrash 使用方法

使用Symbolicatecrash符号化crash日志 · Ney的技术博客

记录还原crash log过程

记录还原crash log过程