相关疑难解决方法(0)

象征性iPhone应用程序崩溃报告

我想试着象征我的iPhone应用程序的崩溃报告.

我从iTunes Connect检索了崩溃报告.我有我提交到App Store的应用程序二进制文件,我有作为构建的一部分生成的dSYM文件.

我将所有这些文件放在一个由聚光灯索引的目录中.

现在怎么办?

我试过调用:

symbolicatecrash crashreport.crash myApp.app.dSYM
Run Code Online (Sandbox Code Playgroud)

它只是输出崩溃报告中的相同文本,而不是符号化.

难道我做错了什么?

crash-reports symbolicate ios

429
推荐指数
13
解决办法
24万
查看次数

Atos无法从归档应用程序的dSYM获取符号

我有BugSense的崩溃报告,因此我有关于崩溃的内存位置的信息,但它们没有象征性.此外,Bug Sense不会发送传统的崩溃报告,但仍会给我一个bug跟踪.因此,我尝试使用Atos来获取崩溃的确切位置.我已经在XCode 4中存档了应用程序并使用该版本提交到应用程序商店,因此我有一个dSYM文件.我运行了以下代码:

atos -arch armv7 -o MyApp.app.dSYM 0x001057e9
Run Code Online (Sandbox Code Playgroud)

但是,我没有得到正确的输出,而是收到错误:

atos cannot load symbols for the file MyApp.app.dSYM for architecture armv7
Run Code Online (Sandbox Code Playgroud)

有关为什么会发生这种情况的任何建议?我没有从应用程序中删除调试符号.

crash xcode symbolicatecrash ios

34
推荐指数
1
解决办法
2万
查看次数

如何在iOS中使用dSYM文件解码崩溃日志?

我的iOS应用程序崩溃了.我想用dSYM文件读取崩溃日志.这怎么可能?

crash crash-log ios

18
推荐指数
2
解决办法
1万
查看次数

Atos没有正确地表示系统框架/库

问题是,当PLCrashReporter报告的堆栈跟踪地址符号化时,不会返回实际的系统框架/库符号行.我的应用程序行虽然显示了符号化的正确违规行.

一些配置.我在我的OSX 10.9.5上安装了Xcode 5.1.1和Xcode 6.0.1.

使用Xcode 5.1.1并检查设备日志时,我可以看到崩溃,尽管崩溃报告中不会发生任何符号.

使用Xcode 6.0.1崩溃我的应用程序并检查设备日志,我可以看到报告符号正确.

在任何情况下,Atos都不会返回正确的Apple系统框架/库符号行.它只返回与相应框架/库无关的垃圾.请参阅下面的示例.

详细说明了我使用PLCrashReporter向我报告的崩溃堆栈跟踪以及与设备日志符号化报告的比较.

这是使用PLCrashReporter unsymbolicated报告的堆栈跟踪:

0   libsystem_platform.dylib 0x000000019726ce5c 0x197268000 + 20060
1   libsystem_c.dylib 0x00000001971253e0 0x197124000 + 5088
2   MyNewPlugin 0x000000010003ac70 0x10002c000 + 60528
3   UIKit 0x000000018d5f90b0 0x18d5b0000 + 299184
4   UIKit 0x000000018d5f9044 0x18d5b0000 + 299076
5   UIKit 0x000000018d5e2520 0x18d5b0000 + 206112
6   UIKit 0x000000018d5f8a44 0x18d5b0000 + 297540
7   UIKit 0x000000018d5f86d8 0x18d5b0000 + 296664
8   UIKit 0x000000018d5f3370 0x18d5b0000 + 275312
9   UIKit 0x000000018d5c4b50 0x18d5b0000 + 84816
10  UIKit 0x000000018d5c2c40 0x18d5b0000 + 76864
11 …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c symbolicate ios plcrashreporter

11
推荐指数
1
解决办法
3637
查看次数

NSThread callStackSymbols记录<redacted>符号

我正在尝试调试一些并发代码,当我记录[NSThread callStackSymbols]; 控制台显示我感兴趣的大部分符号为<redacted>.

有没有办法在运行时解决这个问题?我删除了设备符号文件夹,但Xcode重新符号似乎没有解决问题.

还有一些其他问题,但他们似乎都试图在崩溃文件上解决这个问题.

如何在调试控制台中查看框架符号的方法名称?

我正在运行Xcode 5.

debug-symbols ios

5
推荐指数
1
解决办法
3974
查看次数

dSYM 地址查找

我已经从 iOS 应用程序的 dSYM 文件中解析出地址、文件名和行号。我基本上有一个将地址映射到文件名和行号的表,这对于调试非常有帮助。

为了获取actual lookup address,我使用崩溃报告中的堆栈跟踪地址并使用此答案中指定的公式:/sf/answers/950321991/。所以像这样的事情。

(actual lookup address) 
= (stack trace address) + (virtual memory slide) - (image load address)
Run Code Online (Sandbox Code Playgroud)

我使用该地址并在我的桌子上查找它。我得到的文件名是正确的,但行号始终指向被调用的函数或方法的末尾,而不是调用堆栈跟踪上的以下函数的实际行。

我在某处读到,不记得在哪里,必须取消标记帧地址,因为它们对齐到系统指针大小的两倍。因此,对于 32 位系统,指针大小为 4 字节,因此我们使用 8 字节进行脱标记,使用如下公式:

(de-tagged address) = (tagged address) & ~(sizeof(uintptr_t)*2 - 1)
Run Code Online (Sandbox Code Playgroud)

其中uintptr_t是 Objective-C 中指针使用的数据类型。

完成此操作后,查找就可以工作了,但我必须做一些事情,例如找到小于或等于去标记地址的最近地址

问题#1
为什么我必须取消堆栈帧地址的标记?为什么堆栈跟踪中的地址没有指向正确的位置?

问题#2
有时崩溃报告中似乎缺少帧。例如,如果function1()调用function2()哪个调用function3()哪个调用function4(),在我的堆栈跟踪中我会看到类似的内容:

0  Exception
1  function4()
2  function3()
4  function1()
Run Code Online (Sandbox Code Playgroud)

即使在取消标记之后,(上面第 2 帧)的堆栈跟踪地址function3() …

objective-c dwarf ios dsym

3
推荐指数
1
解决办法
3431
查看次数

按地址获取符号(表示二进制,iOS构建)

我有分配仪器的快照和有趣符号的地址:

这是截图

我想知道,这个地址在代码中.我有相应的dSYM文件.我试图使用atosym命令行工具,但它给了我错误的符号(与我的应用程序无关).

怎么弄?

PS:二进制文件是由XCode 4.3.2构建的,代码语言是C++,armv7架构,发布构建配置.

xcode symbolicate armv7 ios object-address

2
推荐指数
1
解决办法
3082
查看次数