当我调试我的iPhone应用程序时,我收到错误,应用程序崩溃了.我添加了一个异常断点,但它没有指出代码中的任何位置并且崩溃了main.m.
在这里,我在应用程序崩溃时添加了XCode窗口的屏幕截图.
如何从中找到崩溃的确切问题?
可能吗?请帮忙.
我有一个我正在iOS 10 Beta 3上测试的应用程序,并且由于某些奇怪的原因,每当我执行这一个方法时,它似乎崩溃在startPedometerUpdatesFromDate下面的行:
if (!_pedometer) {
_pedometer = [[CMPedometer alloc] init];
}
[_pedometer startPedometerUpdatesFromDate:[NSDate date] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {
Run Code Online (Sandbox Code Playgroud)
我已经确认_pedometer不是nil,因为它在升级之前在iOS 9中有效,所以更奇怪.
控制台中没有任何内容表明代码有任何问题,当它崩溃时只会导致这种情况(即使有异常断点):
libsystem_kernel.dylib`__abort_with_payload:
0x183a58d94 <+0>: movz x16, #0x209
0x183a58d98 <+4>: svc #0x80
-> 0x183a58d9c <+8>: b.lo 0x183a58db4 ; <+32>
0x183a58da0 <+12>: stp x29, x30, [sp, #-16]!
0x183a58da4 <+16>: mov x29, sp
0x183a58da8 <+20>: bl 0x183a3d7dc ; cerror_nocancel
0x183a58dac <+24>: mov sp, x29
0x183a58db0 <+28>: ldp x29, x30, [sp], …Run Code Online (Sandbox Code Playgroud) 这是崩溃日志
Date/Time: 2011-02-10 21:12:00.478 +0900
OS Version: iPhone OS 4.2.1 (8C148)
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread: 0
Thread 0 Crashed:
0 libSystem.B.dylib 0x30d7c2d4 __kill + 8
1 libSystem.B.dylib 0x30d7c2c4 kill + 4
2 libSystem.B.dylib 0x30d7c2b6 raise + 10
3 libSystem.B.dylib 0x30d90d72 abort + 50
4 libstdc++.6.dylib 0x34981a20 __gnu_cxx::__verbose_terminate_handler() + 376
5 libobjc.A.dylib 0x34a83594 _objc_terminate + 104
6 libstdc++.6.dylib 0x3497fdf2 __cxxabiv1::__terminate(void (*)()) + 46
7 libstdc++.6.dylib 0x3497fe46 std::terminate() + 10
8 libstdc++.6.dylib 0x3497ff16 …Run Code Online (Sandbox Code Playgroud) 我在main.m文件中的代码如下.从我开始编写这个应用程序时起,我根本没有改变它.
#import <UIKit/UIKit.h>
#import "rickAppDelegate.h"
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([rickAppDelegate class]));
}
}
Run Code Online (Sandbox Code Playgroud)
我在'return UIApplicationMain'行上收到SIGABRT错误.我的程序是一个显示红色按钮的应用程序,当您按下它时,它会播放视频.使用本教程实现iAd后出现此错误:http: //www.ioslearner.com/implement-iads-tutorial-iphone-ipad-sdk/
它起初工作,但后来我开始收到SIGABRT错误.我做了很多搜索,无法弄清楚如何解决这个问题,在所有的网站中,有人问这个,然后自己弄清楚或通过一个我无法理解的非常模糊的答案.请帮忙!如果您回答,请具体说明我必须做什么.如果需要,我可以发布我的整个代码.提前致谢!
这是一个简单的线程跟踪程序.线程只打印前十个整数,然后打印"线程完成"消息.
#include <iostream>
#include <vector>
#include <numeric>
#include <thread>
void f();
int main(int argc, const char * argv[]) {
std::thread t(f);
std::cout << "Thread start" << std::endl;
t.detach();
t.join();
std::cout << "Thread end" << std::endl;
return 0;
}
void f()
{
std::vector<int> a(10);
std::iota(a.begin(), a.end(), 0);
for(const int& i : a)
{
std::cout << i << std:: endl;
}
std::cout << "Thread is done." << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
但是,当它运行时,t.join会在libc ABI中的某处抛出一个std :: __ 1 :: system_error异常,导致程序以SIGABRT终止:
Thread start
0
1
2
3 …Run Code Online (Sandbox Code Playgroud) 几天后,我在我的一个应用程序中看到了一个非常奇怪的行为.一添加第二个动作,UIAlertController就会崩溃.这是代码>
let alertController = UIAlertController.init(title: title, message: message, preferredStyle: .Alert)
for action in actions
{
alertController.addAction(action)
}
Run Code Online (Sandbox Code Playgroud)
actions是一个包含UIAlertAction元素的数组,在我的情况下2.我已经尝试重新排序操作以查看特定UIAlertAction对象是否存在问题,但是不,在添加第二个操作时应用程序总是崩溃.我像这样创建它们:
let cancelAction = UIAlertAction.init(title: "Cancel", style: .Cancel)
{ (action:UIAlertAction!) -> Void in
print("User cancelled action");
}
Run Code Online (Sandbox Code Playgroud)
编辑:这是我创建数组的方式:
showAlertView("Proceed", message: proceedMessage, actions: [cancelAction, proceedAction])
Run Code Online (Sandbox Code Playgroud)
编辑结束
大多数代码来自Apple教程,几乎没有变化.调试器立即跳转到class AppDelegate: ...没有其他信息然后SIGABRT的行,在崩溃日志中我看到:
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
Filtered syslog:
None found
Last Exception Backtrace:
0 CoreFoundation 0x1832c6db0 __exceptionPreprocess + 124
1 libobjc.A.dylib 0x18292bf80 objc_exception_throw …Run Code Online (Sandbox Code Playgroud) 我正在使用:
在 venv 中运行和调试以下 Python 代码:
import jose
print(jose)
from jose import jwt
token = jwt.encode({'key': 'value'}, 'secret', algorithm='HS256')
print(token)
Run Code Online (Sandbox Code Playgroud)
结果出现以下错误:
进程以退出代码 134 结束(被信号 6 中断:SIGABRT)
具体行是:from jose import jwt。
我如何获得更多信息以解决该问题。
我的 venv pip 冻结:
Active-Alchemy==1.0.0
alembic==1.2.1
aniso8601==8.0.0
anyjson==0.3.3
appnope==0.1.0
arrow==0.15.2
asn1crypto==0.24.0
attrdict==2.0.0
attrs==19.3.0
auth0-python==3.1.2
backcall==0.1.0
bcrypt==3.1.7
beautifulsoup4==4.8.1
bleach==3.1.0
boto3==1.10.2
botocore==1.13.2
cachetools==3.1.1
certifi==2019.9.11
cffi==1.11.5
chardet==3.0.4
Click==7.0
configparser==4.0.2
crypto==1.4.1
cryptography==2.4.2
cssselect==1.1.0
cytoolz==0.9.0.1
decorator==4.3.0
defusedxml==0.6.0
django-dotenv==1.4.2
dnspython==1.16.0
docutils==0.15.2
EasyProcess==0.2.7
ecdsa==0.13
emoji==0.4.5
entrypoints==0.3
eth-abi==1.2.2
eth-account==0.3.0
eth-hash==0.2.0 …Run Code Online (Sandbox Code Playgroud) 非常自我解释.这是导致'new vector'行上的SIGABRT的方法:
vector<string> * Task::arguments() {
vector<string> *args = new vector<string>(); // CAUSES SIGABRT
int count = sizeof(_arguments);
for (int x = 0; x < count; x++) {
string argument(_arguments[x]);
args->push_back(argument);
}
return args;
}
Run Code Online (Sandbox Code Playgroud)
请注意,在其他地方我称之为确切的行没有任何问题.以下是Task类中包含的列表:
#include <vector>
#include <unistd.h>
#include <string>
using namespace std;
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
我刚刚从 Crashlytics 收到我的第一份崩溃报告,并正在尝试纠正该问题。不幸的是,只有一行代码可以在较旧的设备上运行,因此我无法在 iPhone 6 上对其进行测试。
Crashlytics 的崩溃报告强调了两个线程,第一个是:
Fatal Exception: NSInvalidArgumentException
-[CABasicAnimation altitude]: unrecognized selector sent to instance 0x17734440
Run Code Online (Sandbox Code Playgroud)
而第二条则是:
Crashed: Map Update :: NSOperation 0x1a839470
SIGABRT ABORT at 0x316a3dfc
Run Code Online (Sandbox Code Playgroud)
两个线程的指示代码行是:
let relativeAlt = mylocation.altitude - appDelegate.elevation
Run Code Online (Sandbox Code Playgroud)
在哪里:
let mylocation = self.mapView.myLocation
let appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
Run Code Online (Sandbox Code Playgroud)
我试图了解我在崩溃报告中阅读的内容。我看它的方式程序不理解altitude出于某种原因所做的参考?这对我来说没有意义,因为此崩溃似乎发生在该应用程序已运行几分钟而没有错误之后,突出显示的代码行可能在应用程序崩溃之前运行了数百次。这里到底发生了什么?
附加信息:
自从撰写本文以来,我收到了额外的崩溃,我认为这些崩溃源于同一问题:
Crashed: Map Update :: NSOperation 0x19fb2d50
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x11d077ca
Crashed: Map Update :: NSOperation 0x145ced50
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x81450a64
Run Code Online (Sandbox Code Playgroud)
第一个在我的代码中突出显示了以下行(我相信自从此测试版发布以来我一直在开发该应用程序并且行号略有变化):
self.lastLocation = (self.mapView.myLocation as CLLocation).coordinate
Run Code Online (Sandbox Code Playgroud)
虽然第二次崩溃只是给了我: …
在我的应用程序中,我有一个 TestFlight 测试版。它加载良好,并且所有按钮和操作都有效,除了单击 TableView 的一个部分之外,当我单击它时,它每次都会崩溃。但是,仅限于 TestFlight 测试版安装。在 Xcode Simulator 上它运行良好,如果通过插入计算机并运行在我的手机上进行调试,它运行良好。当我在 Xcode 中打开崩溃日志时,我得到了下面的图像,但它并没有真正告诉我任何信息。这是崩溃日志:
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
Last Exception Backtrace:
0 CoreFoundation 0x195260164 __exceptionPreprocess + 228 (NSException.m:199)
1 libobjc.A.dylib 0x194f74c1c objc_exception_throw + 60 (objc-exception.mm:565)
2 CoreFoundation 0x19514fbb8 +[NSException raise:format:] + 112 (NSException.m:155)
3 UIKitCore 0x198cf0d14 -[UISearchDisplayController initWithCoder:] + 88 (UISearchDisplayController.m:350)
4 UIFoundation 0x1988c793c UINibDecoderDecodeObjectForValue + 728 (UINibDecoder.m:717)
5 UIFoundation 0x198862d50 -[UINibDecoder decodeObjectForKey:] + 312 (UINibDecoder.m:811)
6 UIKitCore 0x199029668 -[UIRuntimeConnection initWithCoder:] …Run Code Online (Sandbox Code Playgroud)