Xcode不显示导致崩溃的代码行。

10 浏览
0 Comments

Xcode不显示导致崩溃的代码行。

每次我的应用程序崩溃时,Xcode都会将main()函数中的UIApicationMain()调用标记为导致崩溃的代码行。在某些情况下,这是正常的(例如分段错误),但我试图处理的崩溃是一个简单的SIGABRT,详细信息记录在控制台中:\n

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary setObject:forKey:]: attempt to insert nil value (key: Date)'

\n旧版本的SDK中Xcode通常会正确显示该行,但自从我升级到Xocde 4.2以后就发生了改变。\n很明显,Xcode确切地知道是什么导致了崩溃(或者可以知道),但仍然没有显示实际的代码行。有没有任何修复或解决此问题的方法?

0
0 Comments

当使用Xcode进行调试时,有时会遇到崩溃但Xcode无法显示导致崩溃的行的情况。这可能是因为Xcode默认使用了lldb调试器,而不是gdb调试器。解决此问题的方法是编辑当前的scheme,并启用NSZombieEnabled、MallocStackLogging和guard malloc。然后,在应用程序崩溃时,在gdb控制台中键入以下命令:

(gdb) info malloc-history 0x543216

将0x543216替换为导致NSInvalidArgumentException的对象的地址,这样就可以获得一个更有用的堆栈跟踪,显示导致崩溃的代码行。

如果尝试上述方法后出现'info' is not a valid command的错误,请确保调试器设置为gdb而不是默认的lldb。可以在编辑scheme菜单的运行部分进行更改。

0
0 Comments

Xcode是一种常用的开发环境,但是有时候在调试过程中会遇到一些问题,比如无法定位导致Crash的具体代码行。下面将介绍一个关于如何解决Xcode不显示导致Crash的代码行的问题,并提供了一种解决方法。

解决方法如下:

1. 首先,按照StackOverflow的这个回答中的说明进行操作。

2. 打开Xcode的“Edit Scheme”(编辑模式)。

3. 在左侧选中“Run”(运行)。

4. 在右侧的“Diagnostics”(诊断)选项卡中,勾选“Enable Zombie Objects”(启用僵尸对象)。

5. 点击“Close”(关闭)按钮保存设置。

6. 运行你的程序,Xcode将会在导致问题的代码行处中断。

以上就是解决Xcode不显示导致Crash的代码行的问题的方法。不过令人惊讶的是,即使到了2017年,Xcode仍然默认关闭了这个功能。为什么你不想看到导致问题的代码行呢?而且,“启用僵尸对象”?这个命名真的有用吗?对新开发者来说这个名字有意义吗?令人沮丧的是,Xcode在App Store中的评分一直很低,年复一年。似乎没有人在听取用户的意见。

正如一个使用Visual Studio的开发者所说,他遇到了很多坚称Xcode是他们使用过的最好的开发环境的Xcode开发者。他们认为Xcode是逻辑、友好和有帮助的,尽管有一些小问题。即使到了2019年11月,Xcode在App Store上的评分仍然只有3.1,大多数人给了5星或1星评价。似乎没有人在听取用户的意见。

0
0 Comments

Xcode doesn't show the line that causes a crash是一个经常出现的问题。出现这个问题的原因是Xcode在编译过程中无法显示导致异常的代码行。解决这个问题的方法是设置异常断点,这样Xcode就能在发生异常的地方停下来。具体操作步骤如下(适用于Xcode 4):

1. 在Xcode的左侧项目导航器中,点击断点导航器(位于顶部按钮栏的最右侧,图标看起来像一个粗箭头)。

2. 在导航器的底部,点击“+”按钮。

3. 选择“添加异常断点”。

4. 一个新的断点将被创建。你可以根据需要进行配置,但也可以调整其行为。

5. 运行你的项目并复现异常。

另外,如果异常发生在第三方库/框架中,你可能会遇到困难,因为这些代码是编译过的,Xcode无法显示导致异常的代码行。如果是这种情况,并且你确定正确使用了这些库,那么你应该向这些库的维护者提交一个bug报告。

需要注意的是,在设置异常断点时,选择“On Throw”,否则它会在主线程上捕获断点。另外,如果你想同时看到异常的详细信息和发生异常的位置,可以尝试按下“继续程序执行”按钮(可能需要多次按下),这样就能在不设置断点的情况下查看异常详情。

总之,设置异常断点可以帮助开发者找到导致崩溃的代码行,这对于调试应用程序非常有帮助。一些开发者表示,他们在没有设置异常断点的情况下,调试应用程序花费了很长时间,而设置异常断点后,问题得到了解决。然而,也有一些开发者认为Xcode在这方面的处理不够完善,希望Xcode能自动进行异常断点的设置。

0