我的应用程序在我的Iphone上启动时崩溃了

时间:2010-12-23 19:28:38

标签: iphone crash

我在这里遇到问题:我的应用程序在我的Iphone(JB)上崩溃了,尽管Xcode没有抱怨任何事情。该应用程序在模拟器上工作正常。

但是,设备日志中有这个:

Thread 0 Crashed:
0   libSystem.B.dylib              0x00078ac8 __kill + 8
1   libSystem.B.dylib              0x00078ab8 kill + 4
2   libSystem.B.dylib              0x00078aaa raise + 10
3   libSystem.B.dylib              0x0008d03a abort + 50
4   libstdc++.6.dylib              0x00044a20 __gnu_cxx::__verbose_terminate_handler() + 376
5   libobjc.A.dylib                0x00005958 _objc_terminate + 104
6   libstdc++.6.dylib              0x00042df2 __cxxabiv1::__terminate(void (*)()) + 46
7   libstdc++.6.dylib              0x00042e46 std::terminate() + 10
8   libstdc++.6.dylib              0x00042f16 __cxa_throw + 78
9   libobjc.A.dylib                0x00004838 objc_exception_throw + 64
10  CoreFoundation                 0x0009fd0e +[NSException raise:format:arguments:] + 62
11  CoreFoundation                 0x0009fd48 +[NSException raise:format:] + 28
12  Foundation                     0x000125d8 -[NSURL(NSURL) initFileURLWithPath:] + 64
13  Foundation                     0x000371e0 +[NSURL(NSURL) fileURLWithPath:] + 24

知道问题是什么吗? 我已经花了一整天的时间,但是......我被困住了。

提前致谢...

迈克迈克

好的,这是从控制台开始的,我得到了这个:

  

此GDB配置为   “主机= I386-苹果达尔文   --target = arm-apple-darwin“.tty / dev / ttys002将程序加载到   debugger ...程序已加载。目标   远程移动   /tmp/.XcodeGDBRemote-17280-65   切换到remote-macosx协议   mem 0x1000 0x3fffffff cache mem   0x40000000 0xffffffff无记忆   0x00000000 0x0fff无运行正在运行...   启动远程程序时出错:失败   获取进程456的任务。错误   启动远程程序:失败了   得到过程456的任务   正在调试的程序不存在   跑。正在调试的程序不是   正在运行。

     

[会议于2010-12-23开始   20:33:33 +0100。] GNU gdb   6.3.50-20050815(Apple版gdb-1472)(8月5日星期五05:54:10 UTC   2010)版权所有2004自由软件   Foundation,Inc。GDB是免费软件,   由GNU General Public提供   许可证,欢迎您进行更改   它和/或分发它的副本   在一定条件下。输入“显示   复制“看看条件。那里   GDB完全没有保修。   输入“show warranty”了解详情。这个   GDB配置为   “主机= I386-苹果达尔文   --target = arm-apple-darwin“.tty / dev / ttys004将程序加载到   debugger ...程序已加载。目标   远程移动   /tmp/.XcodeGDBRemote-17280-72   切换到remote-macosx协议   mem 0x1000 0x3fffffff cache mem   0x40000000 0xffffffff无记忆   0x00000000 0x0fff无运行正在运行...   启动远程程序时出错:失败   获取进程508的任务。错误   启动远程程序:失败了   得到过程508的任务   正在调试的程序不存在   跑。正在调试的程序不是   正在运行。

以下是调用网址的代码

NSURL * storeURL = [NSURL fileURLWithPath:[[self applicationDocumentsDirectory] ​​stringByAppendingPathComponent:@“TheLearningMachine.sqlite”]];

我希望你能更好地阅读。

7 个答案:

答案 0 :(得分:1)

代码中的某些内容是在设备上使用错误的网址调用[NSURL fileURLWithPath:]。此URL可能很糟糕,因为您在设备上引用了硬编码路径。

检查你是如何构建URL的 - 模拟器更容忍这里的问题。

您是否尝试调用mailto:或callto:?

它也可能是一个不同问题的副作用,例如this Japanese post在没有先调用alloc的情况下调用init - 似乎与你有相同的callstack。

答案 1 :(得分:1)

好的,谢谢你们的支持和建议,Graham Parks是对的。我很难过,因为我无法使用Iphone调试器。 (也许是因为它越狱了)。它仍然没有工作顺便但至少,我的应用程序现在。

我不知道你们第一次看到你的第一个应用程序出现在你的Iphone屏幕上时是否能记得...... Waouh,我几乎哭了,因为我刚刚向Apple支付了79欧元发现我的应用程序不会安装在JB Iphone上。

这是我的圣诞礼物。

关于这里的错误,问题是我在定义网址时犯了一个错误。

NSString * modelPath = [[NSBundle mainBundle] pathForResource:@“TheLearningMachine”ofType:@“momd”];

问题是“妈妈”,(妈妈好多了)而且我的Iphone也更合作; - )

非常感谢大家的帮助....顺便说一句圣诞快乐!

迈克迈克

答案 2 :(得分:0)

检查您的控制台。一个未被捕获的例外被抛出;该异常的详细信息将在Xcode的控制台中打印出来。

答案 3 :(得分:0)

根据您的代码,这一行是问题所在:

NSURL *storeURL = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"TheLearningMachine.sqlite"]];

尝试将其替换为:

NSString *appDirectory = [self applicationDocumentsDirectory];
NSLog(@"appDirectory: %@",appDirectory);
NSString *finalPath = [appDirectory stringByAppendingPathComponent: @"TheLearningMachine.sqlite"];
NSLog(@"finalPath: %@",appDirectory);
NSURL *storeURL = [NSURL fileURLWithPath: finalPath];
NSLog(@"storeURL: %@",storeURL);

上面的一行在输出到​​控制台时应该产生一个零或至少某种奇怪的值。

答案 4 :(得分:0)

您应用的启动代码中某处正在调用[NSURL fileURLWithPath:],并且它会引发异常。您需要检查传递给它的字符串,可能需要NSLog()调用。

(我的猜测是传递给它的值是nil,因为无论什么代码生成该路径都会由于某种原因而失败。如果没有看到实际的代码,很难说)

答案 5 :(得分:0)

原谅我,但我找不到任何 - (NSString *)applicationDocumentsDirectory方法或在iOS中定义的属性。你自己定义这个,还是我是一个门把手?

答案 6 :(得分:0)

我自己也碰到了这个,我发现有用的是点击左侧窗格中的文件在文件检查器中打开它,然后确保你的“目标成员资格”(位于右侧) Xcode窗格)检查您的主项目。如果不这样做,你的文件路径将不正确,你将会崩溃。