如何使用symbolicatecrash工具看crash文件(转)

一、在桌面创建一个crash文件夹
1.Xcode-Window-Organize找到Archives找到App-右击-Show in Finder

2.复制.app和.app.dSYM到crash夹文件:右击..xcarchive文件-显示包内容,可以找到这两个文件

二、首先找到symbolicatecrash工具存放的地址
1.打开终端输入以下命令:

find /Applications/Xcode.app -name symbolicatecrash -type f

你会找到:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/./symbolicatecrash

2.用命令将symbolicatecrash拷贝到桌面的crash文件夹里面,与.app和.app.dSYM放一起

cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash /Users/angel/Desktop/crash

3.将Crash文件也拷到当前文件夹里面

三、执行symbolicatecrash
1.打开终端用命令切换到桌面的crash目录下:
cd /Users/你的电脑名称/Desktop/crash

2.执行命令

./symbolicatecrash /Users/angelseahappiness/Desktop/crash/Control_2014-01-13-111838_Lynns-iPad3.crash /Users/angel/Desktop/crash/Control.app.dSYM > Control_symbol.crash

这时候终端有可能会出现:Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 60.

3.输入命令:

export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"

4.再执行

./symbolicatecrash /Users/angelseahappiness/Desktop/crash/Control_2014-01-13-111838_Lynns-iPad3.crash /Users/angel/Desktop/crash/Control.app.dSYM > Control_symbol.crash

这时候终端将会进行处理了

5.将终端完成以后,在crash文件夹里面会多出一个文件Control_symbol.crash:这个就是最终的文件,可以查看bug所在的

Path.Combine (合并两个路径字符串)方法的一些使用细节

今天遇到一个奇怪的现象,使用Path.Combine合并两个路径,结果返回的是第二个参数的路径,上网搜索过了下,才明白此函数的使用方法,记录如下

System.IO.Path.Combine 简单来说,就是合并两个路径字符串。
比如如下调用,Path.Combine(@"C:\11","aa.txt") 返回的字符串路径如后: C:\11\aa.txt

这个方法的声明如下:
public static string Combine ( string path1, string path2 )

我们在合并一些目录的时候,它的两个参数有些特殊限制,下面我们就来依次看这些特殊限制

  1. 如果其中一个参数为 null ,会抛出异常:
    An unhandled exception of type 'System.ArgumentNullException' occurred in mscorlib.dll

Additional information: Value cannot be null.

  1. 如果指定的路径之一是零长度字符串,则该方法返回其他路径。当然,两个都是零长度字符串,则返回的就是 string.Empty ;

  2. 如果 path2 包含绝对路径,则该方法返回 path2。
    比如:string tmp = Path.Combine(@"C:\11", @"D:\aa.txt");

tmp 就等于 @"D:\aa.txt"

  1. path2 不能以 \ 和 / 开头的字符串, 如果是这个字符串开头的,则返回 path2 。

原文地址