问题标签 [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.
xamarin.ios - 如何在模拟器中为 MonoTouch 应用程序生成 .dSYM?
我想在没有 iPad的 Instruments 中分析 MonoTouch 应用程序。我可以分析为模拟器编译的应用程序,但没有符号就没有乐趣:
在项目构建设置中没有使用 dSYM 生成 IPA 的选项——看起来它们仅在为设备编译时可用。
我想要的只是一个MonoTouch-aware dSYM for Simulator。
这可能吗?
ios - Xcode 存档未创建 DSYM 文件
对于我的大多数项目,我设置了一个“归档”方案来归档我的项目,创建一个可以上传到 TestFlight 的 IPA 和 DSYM。
但是,我正在处理一个更复杂的项目,该项目在项目工作区中有多个目标,相当多的静态链接库。我已经检查了每个目标并为所有配置设置了以下内容:
- 部署后处理 -> 否
- 剥离链接产品... -> 否
- 剥离调试... -> 否
- 生成调试符号 -> 是
- 调试信息... -> DWARF with DSYM
我正在使用 Xcode 4.5.2。我已经为许多没有问题的项目做到了这一点。这是第一个似乎阻止创建 DSYM 文件的地方。
无论我尝试什么,我的存档构建都不会生成 .DSYM 文件
ios - 如果您有 dSYM,可以对 .ipa 文件进行逆向工程吗?
一些代码分析工具要求您将 .ipa 与 .dSYM 文件一起提交。
将 .dSYM 文件与 .ipa 一起发送是否存在对应用程序进行逆向工程的风险?我的意思是,如果他同时拥有 .ipa 和 .dSYM,有人可以获取源代码吗?
ios - 关于 iOS 堆栈跟踪符号
我有一些错误报告
但是我无法从我的源代码中找到这个错误。我使用这个命令来知道它在哪里崩溃,但它显示了不相关的代码部分。
atos -arch armv7 -o nuPhoto.app/nuPhoto 0x000885f9
那么,如何确保我的 .app 和 .app.sSYM 与提交到应用商店的版本相同?是否可以在 NSLog 中显示所有信息(包括行号和源代码)而不是使用 atos。谢谢你。
ruby - 如何让 rbenv 继续调试符号?
我在 Mac OS X v10.8.3 上安装了 Ruby 2 的开发版本rbenv
,并使用它来编译我正在研究的 gem。我有一个要调试的内存问题。不幸的是,每当我运行valgrind
,gdb
或cgdb
在 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。
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,它们没有任何效果。
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 中看到的字节顺序相同?
我错过了什么?
提前感谢您的帮助或建议。
ios - 在 corona 项目中在哪里查找应用程序二进制文件和 .dsym 文件
我正在电晕 SDK 中创建一个应用程序。但不幸的是,我的应用程序有时会在我的 iPad 上崩溃,通过控制台我发现崩溃报告已经构建并保存。我在 xcode 中查看了这个崩溃报告,但它没有正确地表示它。我搜索并发现我需要应用程序二进制文件和 .dsym 文件才能让 xcode 完全符号化它。现在,当我构建一个电晕项目时,它会导致application file
它的内容为 and,我无法找到任何.dsym
or binary file
。我需要这些文件来阅读崩溃报告并找出应用程序中的实际错误。
c - 从命令行生成的 .dSYM 文件 (Mac)
我刚开始用 C 编写代码,并使用默认 C 编译器设置为 gcc 运行其他人的 Makefile。我在 Mac OSX 10.8 Mountain Lion 上,我相信我使用“XCode 命令行工具”安装了编译器。在命令行上运行“make”后,我得到了每个程序的这些烦人的 .dSYM 文件。我读到这些是调试文件,但它们真的有必要吗?有什么办法可以防止它们从命令行生成?
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 表示崩溃报告,我也看到了这一点。
为什么会这样?