让crash文件中的内存地址变成函数名称,

假如程序员编译了inhouse给测试。

如果在测试过程中出现奔溃现象,我想程序员一般会来看Device Log 也就是 crash文件

如果crash文件遇到如下的情况,在重要的地方看不到函数名称。我想是一件很奔溃的事情。

 1 Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
 2 Exception Codes: KERN_INVALID_ADDRESS at 0x00000000
 3 Crashed Thread:  0
 4  
 5 Thread 0 name:  Dispatch queue: com.apple.main-thread
 6 Thread 0 Crashed:
 7 0   libsystem_c.dylib                 0x37c0fe54 strlen + 12
 8 1   libstdc++.6.dylib                 0x38202410 std::string::operator=(char const*) + 8
 9 2   FishingJoy                        0x003423a0 0x1000 + 3412896
10 3   FishingJoy                        0x00342b90 0x1000 + 3414928
11 4   FishingJoy                        0x002fb3e0 0x1000 + 3122144
12 5   FishingJoy                        0x002fae3c 0x1000 + 3120700
13 6   CoreFoundation                    0x380b4224 -[NSObject performSelector:withObject:] + 36
14 7   FishingJoy                        0x002d5614 0x1000 + 2967060
15 8   CoreFoundation                    0x380b4224 -[NSObject performSelector:withObject:] + 36
16 9   Foundation                        0x3548e750 __NSThreadPerformPerform + 344
17 10  CoreFoundation                    0x38129afc __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 8
18 11  CoreFoundation                    0x3812935e __CFRunLoopDoSources0 + 358
19 12  CoreFoundation                    0x3812806e __CFRunLoopRun + 646
20 13  CoreFoundation                    0x380ab4d6 CFRunLoopRunSpecific + 294
21 14  CoreFoundation                    0x380ab39e CFRunLoopRunInMode + 98
22 15  GraphicsServices                  0x37e82fc6 GSEventRunModal + 150
23 16  UIKit                             0x31c2b73c UIApplicationMain + 1084
24 17  FishingJoy                        0x0000389c 0x1000 + 10396
25 18  FishingJoy                        0x0000383c 0x1000 + 10300

其实我们可以还原出函数名称,现在需要软件“symbolicatecrash”(点击下载)和编译这台inhouse的电脑。

1、先下载symbolicatecrash,放入一个干净的目录下。顺便把crash文件也拖入此目录。

2、先把app文件给弄出来,步骤Xcode -> Window -> Organizer -> Archives -> 右击给测试的包->“Show in Finder”->“显示包内容”->复制目录“Products/Applications/”下面的.app到 symbolicatecrash同级目录下。

3、打开终端(terminal)首先把symbolicatecrash拖入终端,现在终端会显示symbolicatecrash的地址并在末尾加入空格,不要回车然后依次把crash和app都拖入终端。

现在终端应该是(我在这里因为举例,先去掉绝对目录地址。大家看到的应该是一堆):

symbolicatecrash  a.crash  a.app

在末尾加入输出地址:

symbolicatecrash  a.crash  a.app  >  b.crash  回车。

现在去输出地址看 b.crash,应该已经成功显示函数名称了。

(非常重要的一点就是 symbolicatecrash 必须和编译该应用的XCode相匹配,可在Xcode包内找到:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash)

 1 Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
 2 Exception Codes: KERN_INVALID_ADDRESS at 0x00000000
 3 Crashed Thread:  0
 4  
 5 Thread 0 name:  Dispatch queue: com.apple.main-thread
 6 Thread 0 Crashed:
 7 0   libsystem_c.dylib                 0x37c0fe54 strlen + 12
 8 1   libstdc++.6.dylib                 0x38202410 std::string::operator=(char const*) + 8
 9 2   FishingJoy                        0x003423a0 FishNetCollideHandler::JSONLoaderDidLoad(char const*) + 1936
10 3   FishingJoy                        0x00342b90 non-virtual thunk to FishNetCollideHandler::JSONLoaderDidLoad(char const*) + 32
11 4   FishingJoy                        0x002fb3e0 -[JSONLoaderDelegateEx JSONLoaderDidLoad:withResult:] + 144
12 5   FishingJoy                        0x002fae3c -[JSONLoader requestFinished:] + 352
13 6   CoreFoundation                    0x380b4224 -[NSObject performSelector:withObject:] + 36
14 7   FishingJoy                        0x002d5614 -[ASIHTTPRequest reportFinished] + 164
15 8   CoreFoundation                    0x380b4224 -[NSObject performSelector:withObject:] + 36
16 9   Foundation                        0x3548e750 __NSThreadPerformPerform + 344
17 10  CoreFoundation                    0x38129afc __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 8
18 11  CoreFoundation                    0x3812935e __CFRunLoopDoSources0 + 358
19 12  CoreFoundation                    0x3812806e __CFRunLoopRun + 646
20 13  CoreFoundation                    0x380ab4d6 CFRunLoopRunSpecific + 294
21 14  CoreFoundation                    0x380ab39e CFRunLoopRunInMode + 98
22 15  GraphicsServices                  0x37e82fc6 GSEventRunModal + 150
23 16  UIKit                             0x31c2b73c UIApplicationMain + 1084
24 17  FishingJoy                        0x0000389c main + 84
25 18  FishingJoy                        0x0000383c start + 32

转载于:https://www.cnblogs.com/lynn87/archive/2012/11/13/2768233.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《dp补卡——多重背包》

多重背包简介: 有N种物品和一个容量为V的背包。第i种物品最多有Mi件可用,每件耗费的空间为Ci,价值为Wi。求解将哪些物品装入背包可使得这些物品耗费的空间总和不超过背包容量,且价值总和最大。 将Mi件摊开,就是一个01背…

kafka消息确认ack_什么是确认(ACK)? ACK代表什么?

kafka消息确认ackACK:致谢 (ACK: Acknowledgment) An acknowledgment (ACK) is a signal that is passed among the communicating processes, computers, or devices to indicate acknowledgment, or delivery of the message, as a component of a communications…

CocoaAsyncSocket 套接字

CocoaAsyncSocket 套接字 https://github.com/robbiehanson/CocoaAsyncSocket Asynchronous socket networking library for Mac and iOS 用于iOS以及Mac的异步套接字网络库。 TCP GCDAsyncSocket and AsyncSocket are TCP/IP socket networking libraries. Here are the key…

谷歌浏览器设置缓存方法

谷歌浏览器设置缓存方法: 1、在桌面Google Chrome快捷方式,目标:找到 C:\Users\Splendid\AppData\Local\…\Application\chrome.exe 在这后面加上-Disk-Cache-Dir”Z:\TEMP” 注意: -Disk前面有空格,”Z:\TEMP” 是文件存放在Z盘T…

《dp补卡——买卖股票问题》

目录121. 买卖股票的最佳时机贪心dp思路滚动数组优化122. 买卖股票的最佳时机 II123. 买卖股票的最佳时机 III188. 买卖股票的最佳时机 IV309. 最佳买卖股票时机含冷冻期714. 买卖股票的最佳时机含手续费121. 买卖股票的最佳时机 贪心 取最左最小值,取最右最大值&…

oo0ooo0ooo0oo_OoO的完整形式是什么?

oo0ooo0ooo0ooOoO:外出 (OoO: Out of Office) OoO is an abbreviation of "Out of Office". OoO是“不在办公室”的缩写。 It is an expression, which is commonly used in the Gmail platform. It is written in the body or the subject of the email…

SP2010开发和VS2010专家食谱--第三章节--高级工作流(2)--为沙盒解决方案创建自定义活动...

尽管沙河解决方案功能有限,你仍然可以开发自定义活动,在SharePoint Designer中使用而不用改变web.config或添加.ACTION文件到根文件夹。 转载于:https://www.cnblogs.com/crazygolf/p/3856795.html

sql where 1=1和 0=1 的作用

where 11; 这个条件始终为True,在不定数量查询条件情况下,11可以很方便的规范语句。 一、不用where 11 在多条件查询中的困扰 举个例子,如果您做查询页面,并且,可查询的选项有多个,同时,还让用户…

j@2ff4f00f_J4F的完整形式是什么?

j2ff4f00fJ4F:只是为了好玩 (J4F: Just For Fun) J4F is an abbreviation of "Just For Fun". J4F是“ Just For Fun”的缩写 。 It is an expression, which is commonly used in messaging or chatting on social media networking sites like Faceboo…

《dp补卡——子序列问题》

目录300. 最长递增子序列674. 最长连续递增序列718. 最长重复子数组1143. 最长公共子序列53. 最大子序和392. 判断子序列115. 不同的子序列583. 两个字符串的删除操作72. 编辑距离647. 回文子串 (与 5.最长回文子串思路差不多)516. 最长回文子序列300. 最…

[LeetCode] Maximal Rectangle

Given a 2D binary matrix filled with 0s and 1s, find the largest rectangle containing all ones and return its area. 在做 Largest Rectangle in Histogram的时候有人说可以用在这题,看了一下还真是,以每行为x轴,每列往上累计的连续的…

什么是alpha测试_什么是ALPHA?

什么是alpha测试Α (ALPHA) Alpha is the first and foremost letter of the Greek alphabet. In the classification of Greek numerals or numbers, it constitutes a value of 1. Alpha是希腊字母的第一个也是最重要的字母 。 在希腊数字或希腊数字的分类中,它的…

《leetcode : 647. 回文子串 思考分析双指针解法》

647. 回文子串 如何确定是回文串: 找中心然后往两边扩散,判断是否对称即可。 在遍历中心点的时候,注意中心点可以是一个元素也可以是两个元素。 class Solution { public:int cal_two_extend(const string& s,int i,int j,int n){int re…

天草初级班(3)

算术运算指令算术运算指令是反映CPU计算能力的一组指令,也是编程时经常使用的一组指令。它包括:加、减、乘、除及其相关的辅助指令。 该组指令的操作数可以是8位、16位和32位(80386)。当存储单元是该类指令的操作数时,该操作数的寻址方式可以…

4.3.3版本之引擎bug

bug描述:   IOS设备上,当使用WWW www WWW.LoadFromCacheOrDownload(url, verNum); 下载资源时,第一次下载某个资源,www.assetBundle必定为空。 解决办法:   引擎版本降到4.3.2或者升到4.3.4或更高。 这个bug绝对是…

sml完整形式_411的完整形式是什么?

sml完整形式411:信息 (411: Information) 411 is an abbreviation of “Information". 411是“信息”的缩写 。 It is an expression, which is commonly used in messaging or chatting on social media networking sites like Facebook, Yahoo Messenger, a…

php 检测用户是否关闭浏览器

1、例子1 echo str_repeat(" ",3000);ignore_user_abort(true); mylog(online);while (true) {/** 1、程序正常结束 connection_status 0* 2、点击浏览器“停止”按钮 connection_status 1* 3、超时 connection_status 2*/echo "test<br>\n&qu…

explain用法

explain用法 EXPLAIN SELECT …… 变体&#xff1a; 1. EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句&#xff0c;运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2. EXPLAIN PARTITIONS SELECT …… 用于分区表的EXPLAIN 执行计划包含的信息 id…

《位运算技巧以及Leetcode的一些位运算题目》

目录技巧练习位运算[461. 汉明距离](https://leetcode-cn.com/problems/hamming-distance/)[190. 颠倒二进制位](https://leetcode-cn.com/problems/reverse-bits/)[136. 只出现一次的数字](https://leetcode-cn.com/problems/single-number/)[260. 只出现一次的数字 III](http…

linux读取配置文件(C语言版)

一个通用的linux系统中C语言版读取配置文件的函数。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #include <errno.h>#define KEYVALLEN 100/* 删除左边的空格 */ char * l_trim(char * szOutput, con…