问题标签 [dsym]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1078 浏览

xamarin.ios - 如何在模拟器中为 MonoTouch 应用程序生成 .dSYM?

我想在没有 iPad的 Instruments 中分析 MonoTouch 应用程序。我可以分析为模拟器编译的应用程序,但没有符号就没有乐趣:

缺少符号

在项目构建设置中没有使用 dSYM 生成 IPA 的选项——看起来它们仅在为设备编译时可用。

无法生成 dSYM

我想要的只是一个MonoTouch-aware dSYM for Simulator。
这可能吗?

0 投票
7 回答
25427 浏览

ios - Xcode 存档未创建 DSYM 文件

对于我的大多数项目,我设置了一个“归档”方案来归档我的项目,创建一个可以上传到 TestFlight 的 IPA 和 DSYM。

但是,我正在处理一个更复杂的项目,该项目在项目工作区中有多个目标,相当多的静态链接库。我已经检查了每个目标并为所有配置设置了以下内容:

  • 部署后处理 -> 否
  • 剥离链接产品... -> 否
  • 剥离调试... -> 否
  • 生成调试符号 -> 是
  • 调试信息... -> DWARF with DSYM

我正在使用 Xcode 4.5.2。我已经为许多没有问题的项目做到了这一点。这是第一个似乎阻止创建 DSYM 文件的地方。

无论我尝试什么,我的存档构建都不会生成 .DSYM 文件

0 投票
2 回答
5611 浏览

ios - 如果您有 dSYM,可以对 .ipa 文件进行逆向工程吗?

一些代码分析工具要求您将 .ipa 与 .dSYM 文件一起提交。

将 .dSYM 文件与 .ipa 一起发送是否存在对应用程序进行逆向工程的风险?我的意思是,如果他同时拥有 .ipa 和 .dSYM,有人可以获取源代码吗?

0 投票
0 回答
516 浏览

ios - 关于 iOS 堆栈跟踪符号

我有一些错误报告

但是我无法从我的源代码中找到这个错误。我使用这个命令来知道它在哪里崩溃,但它显示了不相关的代码部分。

atos -arch armv7 -o nuPhoto.app/nuPhoto 0x000885f9

那么,如何确保我的 .app 和 .app.sSYM 与提交到应用商店的版本相同?是否可以在 NSLog 中显示所有信息(包括行号和源代码)而不是使用 atos。谢谢你。

0 投票
1 回答
954 浏览

ruby - 如何让 rbenv 继续调试符号?

我在 Mac OS X v10.8.3 上安装了 Ruby 2 的开发版本rbenv,并使用它来编译我正在研究的 gem。我有一个要调试的内存问题。不幸的是,每当我运行valgrind,gdbcgdb在 a 的上下文中rake spec,我都会收到一大堆像这样的错误:

显然,那个ruby-build目录已经不存在了。

我从. _ valgrind以下是示例:

如果我尝试使用该--dsymutil=yes选项,我会收到与以下错误基本相同的错误gdb

根据另一个问题的答案,我试着在info target里面跑gdb这是输出。

有什么方法可以指示rbenv将调试符号放在不会被清理的地方吗?

我正在使用通过自制软件安装的 GCC 4.7.1。我确切的 Ruby 版本字符串是ruby 2.1.0dev (2013-04-01 trunk 40029) [x86_64-darwin12.3.0],我的rbenv版本是 0.4.0。

0 投票
0 回答
849 浏览

xcode - 存档缺少调试信息时的 dSYM 文件

我有一个工作区,里面有两个项目文件。一个包含我的应用程序代码 (APP),另一个构建一个链接到 APP 项目的静态库 (Pods)。

选择时生成的 dSYMProduct->Archive仅包含 APP 项目的调试信息。如果我通过选择Product->Build For->Archiving/Xcode 进行构建,则会生成一个包含所有必需调试信息的 dSYM。

根据以下答案,这是 Xcode 中的一个错误,现在已在 >=4.6 版本中修复。

https://stackoverflow.com/a/15368776/215748

我正在使用 Xcode 版本 4.6.2 (4H1003) 并且仍然有这个问题。

这真的是 Xcode 中的错误,还是存在导致此问题的构建设置?

我已经查看了 COPY_PHASE_STRIP、STRIP_INSTALLED_PRODUCT、GCC_SYMBOLS_PRIVATE_EXTERN 和 GCC_INLINES_ARE_PRIVATE_EXTERN,它们没有任何效果。

0 投票
1 回答
657 浏览

ios - 解析 dSYM (Mach-O) 文件。字节序问题

我正在尝试为包含在 dSYM 文件中的 mach-o 文件编写一个简单的解析器。当我在十六进制编辑器(TextWrangler 上的 Hex Fiend 或 Hex 转储)上打开文件时。我看到这样的东西。

第一个值CEFAEDFE只是FEEDFACE倒数,即MH_MAGIC数字。实际上,这是MH_CIGMA因为它是倒退的。这让我觉得其余的信息是小端的:首先是最低有效字节。在 的情况下0xFEEDFACE,最低有效字节是0xCE,这是我上面示例中的第一个字节,然后是其余字节。

所以我继续检查其余的整数(4 个字节)。在重新排列它们以使其格式正确后(即 0C000000 变为 0000000C),我们有:

0000000C 是 CPU 类型,即 CPU_TYPE_ARM

0000000B 是 CPU 子类型,即 CPU_SUBTYPE_ARM_V7S

0000000A 是 MH_DSYM 的文件类型

00000007 是加载命令的数量

00000D3C 是加载命令占用的字节数

00000000 是标志(没有标志)

0000001B是加载命令LC_UUID,表示这个LC包含UUID

00000018 加载命令的大小,即 0x18 = 24 字节(命令 [4 字节] + 大小 [4 字节] + UUID [16 字节])

现在这就是它变得奇怪的地方,也是我的问题所在。

由于信息是小端的,我认为 UUID(以下 16 个字节)应该像这样“向后”重新排列:9B3EAC06-3C1288AB-933B60E8-20F34EA0。但是,当我dwarfdump用来获取 UUID ( dwarfdump --uuid TestApp.app.dSYM/) 时,我得到了这个:

为什么这是大端顺序?为什么它的打印dwarfdump顺序与我在 Hex Fiend 中看到的字节顺序相同?

我错过了什么?

提前感谢您的帮助或建议。

0 投票
0 回答
208 浏览

ios - 在 corona 项目中在哪里查找应用程序二进制文件和 .dsym 文件

我正在电晕 SDK 中创建一个应用程序。但不幸的是,我的应用程序有时会在我的 iPad 上崩溃,通过控制台我发现崩溃报告已经构建并保存。我在 xcode 中查看了这个崩溃报告,但它没有正确地表示它。我搜索并发现我需要应用程序二进制文件和 .dsym 文件才能让 xcode 完全符号化它。现在,当我构建一个电晕项目时,它会导致application file它的内容为 and,我无法找到任何.dsymor binary file。我需要这些文件来阅读崩溃报告并找出应用程序中的实际错误。

0 投票
3 回答
20505 浏览

c - 从命令行生成的 .dSYM 文件 (Mac)

我刚开始用 C 编写代码,并使用默认 C 编译器设置为 gcc 运行其他人的 Makefile。我在 Mac OSX 10.8 Mountain Lion 上,我相信我使用“XCode 命令行工具”安装了编译器。在命令行上运行“make”后,我得到了每个程序的这些烦人的 .dSYM 文件。我读到这些是调试文件,但它们真的有必要吗?有什么办法可以防止它们从命令行生成?

0 投票
1 回答
2939 浏览

ios - dSYM 地址查找

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

为了获得actual lookup address,我使用崩溃报告中的堆栈跟踪地址并使用此答案中指定的公式:https ://stackoverflow.com/a/13576028/2758234 。所以像这样。

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

我在某处读过,不记得在哪里,必须取消标记帧地址,因为它们对齐以使系统指针大小加倍。所以对于 32 位系统,指针大小是 4 字节,所以我们使用 8 字节去标记,使用如下公式:

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

这样做之后,查找排序工作,但我必须做一些事情,比如找到小于或等于去标签地址的最近地址

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

问题 #2
有时在崩溃报告中似乎缺少帧。例如,如果function1()调用function2()which callsfunction3()which callsfunction4(),在我的堆栈跟踪中,我将看到如下内容:

并且(上面的第 2 帧)的堆栈跟踪地址function3()甚至没有指向正确的行号(但它是正确的文件),即使在取消标记之后也是如此。即使我让 Xcode 表示崩溃报告,我也看到了这一点。

为什么会这样?