问题标签 [symbolicate]
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.
ios - 符号化 [NSThread callStackSymbols] 和 [NSThread callStackReturnAddresses]
我想用[NSThread callStackSymbols]
我的方法名称来表示我。我的主要问题是,我不知道如何从我得到的日志中计算内存地址。
我正在尝试从第 0 行计算内存地址,如下所示:
0x000f1ca3 + 4ACA3(来自 MY_APPLICATION + 306339)= 0x13C946
现在我得到了我的 dsym 文件和应用程序二进制文件来从 atos 调用中获取数据。
xcrun atos -arch armv7 -o MY_APPLICATION 0x13C946
这是正确的方法吗?我只接到来自第三方应用程序的电话。但我只是在我自己的方法中记录它,它应该从我自己的实现中调用。
ios - 符号化 iOS 崩溃地址返回不适当的结果
我最近花了几天时间来学习如何用自定义解决方案来表示我收到的崩溃的行号。
我已经确定我需要 .app 和 .dSYM 文件,我检查了 UUID,它与我遇到的崩溃相同,我还需要验证 UUID。
三个相同的 UUID 和架构是 arm64,我从我的 iPhone5S 上测试它的崩溃。
好的,假设我的堆栈跟踪中有两个与我的应用程序行相关。这是我得到的 JSON 的完整堆栈跟踪。
好的,现在我在包含 .app 和 .dSYM 文件的文件夹中运行 atos 命令来尝试查找和符号化内存地址。
但是这条线并没有完全返回我可以使用的东西。
我仍在学习这个过程,但我相信(in MyTestApp)
应该从我的测试应用程序中读取一些东西。
我用来使应用程序崩溃并测试如何符号化堆栈跟踪的代码如下。
编辑:
我有"image_size": "0xa8000"
和"image_base_address": "0x100008000"
。
我不应该得到一些关于这个方法和行号的信息(如果可行的话)吗?
任何帮助和评论表示赞赏。
谢谢你。
xcode - 崩溃日志的编程符号
我正在尝试符号化我已自动发送到服务器的崩溃日志。我的应用程序崩溃时,我的应用程序的崩溃日志和 dSYM 文件会发送到服务器。我遇到的问题是象征他们。我想以编程方式执行此操作,以便该过程可以自动化。因此,我试图将 symbolicatecrash 终端命令用作 python 脚本中的子进程。但在我尝试实现它之前,我需要让 symbolicatecrash 正常工作。输入以下命令不成功;
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash -o /Users/aj/Documents/symbolicatedcrash.crash com.COMPANYNAME。 TEST_APP.crash TEST_APP.app.dSYM
我使用 -o 选项将输出写入文件。输入此代码不会返回错误。输出文件被创建,崩溃日志只是没有符号化。
通过研究人们的类似问题,我发现下载 .ipa 文件并解压缩它会有所帮助。我已经这样做了,发现如果 .app 文件在服务器上,symbolicatecrash 命令确实会表示符号。
我的问题是我不想下载 .ipa 文件。每次发生新的崩溃(或至少是新的构建)时下载它对服务器来说效率低下。我只想在每次应用程序崩溃时下载 dSYM 和崩溃文件。
我的问题最终是:我可以只使用 dSYM 文件来表示崩溃日志吗?如果是这样,可以使用 symbolicatecrash 终端命令来完成吗?
谢谢
xcode - 从 Mac 应用程序的调用堆栈中获取符号名称
我有一个来自我的 Mac App Store 应用程序的堆栈跟踪,我想阅读它以帮助诊断用户遇到的问题。我有 dSYM 文件和原始存档构建,但我没有完整的崩溃报告。我只想知道堆栈跟踪中方法的名称(您可以在下面看到其中两个用于MyAppName)。我无法获得lldb
或atos
向我提供这些信息。这是堆栈跟踪的样子:
要获得一个符号(比如上面的第 3 级),我可以使用什么命令?当我打电话lldb
时,甚至不清楚我应该使用十六进制地址还是偏移量,如果这就是 126059 在级别 3 上的内容。
更新
根据atos
文档,看起来我应该像这样调用它:
但是,我将使用什么作为加载的地址?我所拥有的只是我在上面粘贴的内容。无论我使用0x0000000000000001
,0x00007fff87df35fd
还是完全省略-l
,我都会将0x0000000108e91c6b
(我指定的地址)打印回标准输出。
ios - 如何符号化崩溃报告?
我想知道如何符号化从 iOS 应用程序的发布版本生成的崩溃报告。我有一个质量保证人员发送给我的 .crash 文件。我还找到了与归档应用程序对应的 .dsym 文件。那么我该怎么做呢?我尝试了无数来自谷歌的帖子,但没有任何效果。
ios - 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 报告的堆栈跟踪:
这是上面来自 PLCrashReported 的堆栈跟踪,使用“xcrun atos”进行符号化:
这是来自设备日志的上述完全相同的崩溃的堆栈跟踪符号:
您可以看到两个符号化的堆栈跟踪,第一个来自 PLCrashReporter 堆栈跟踪,第二个来自 Xcode 设备日志。在这一点上,我想说的是,我不认为是地址有问题,而是 atos 发生了更多事情。Xcode 是否使用 symbolicatecrash 工具来符号化 Apple 报告?
atos 命令:xcrun atos -arch arm64 -o MyNewPlugin.app.dSYM/Contents/Resources/DWARF/MyNewPlugin -l 0x197268000 0x000000019726ce5c
将导致_mh_execute_header (in MyNewPlugin) + 20060
完全错误的结果,它应该返回类似于设备日志报告的内容_platform_memmove + 188
。
另一个证明第3行问题的atos示例
xcrun atos -arch arm64 -o MyNewPlugin.app.dSYM/Contents/Resources/DWARF/MyNewPlugin -l 0x18d5b0000 0x000000018d5f90b0
,应该返回,UIKit 0x000000018d5f90ac -[UIApplication sendAction:to:from:forEvent:] + 96
而不是返回,UIKit __30-[RequestWorker logEvent:]_block_invoke (in MyNewPlugin) + 232
这与UIKit无关,这是我使用的内部类。
这就是我使用 PLCrashReporter 创建堆栈跟踪行的方式。
编辑: 在终端中使用 symbolicatecrash 来获取未符号化的苹果崩溃报告是符号化所有系统程序集,而不是应用程序行!!!
ios - 将 iOS 崩溃报告导入 Xcode 6.1 的问题
我正在尝试从 Apple 生成的崩溃报告中查找问题
我在Xcode OrganizerdSYM
中有和.app
文件,但无法导入以使用Xcode重新符号化它 .crash
问题是Xcode 6.1的“设备视图”和“查看设备日志”中没有“导入”和“重新符号化”按钮
我已经检查了 Xcode 版本,但找不到对此的引用。
我在这里遗漏了什么?... thx ....
ios - iOS 在发布的产品中也显示带有方法名称的回溯
我希望每次应用程序崩溃时都显示类和方法名称的回溯。我设法在调试模式下使用此代码(该printTrace
函数仅在文件上打印字符串。):
虽然这在应用程序发布时不起作用,因为它会产生一个像这样的堆栈跟踪:
而且我觉得它不是很有用。我也已经尝试过手动调用backtrace
,backtrace_symbols
但它不起作用!
在项目属性中,我有以下设置,应该在构建时复制所有动态符号,所以我仍然无法弄清楚为什么它不起作用!
我该怎么做才能在已发布的应用程序中也拥有此功能?我究竟做错了什么?先感谢您!