我的应用程序在没有记录 cat 异常或任何错误信息的情况下崩溃?
My application is crashing without log cat exception or any error info?
我的应用程序在 return START_STICKY 后立即崩溃。
我的应用程序中有一个前台服务:
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent != null) {
if (intent.getAction().equals(STARTFOREGROUND_ACTION)) {
// Code to create/update notification and start processing goes here
} else if (intent.getAction().equals(ANOTHER_ACTION)) {
// Code to create/update notification and do another processing
} else if (null != intent && intent.getAction().equals(STOPFOREGROUND_ACTION)) {
stopForeground(true);
stopSelf();
}
}
return START_STICKY; // Last reference point in debugger after which application crashes
}
}
我只试过调试最后一点调试是returnSTART_STICKY;专门针对 STOPFOREGROUND_ACTION 信号,然后它崩溃了。
没有错误,应用程序日志中显示警告,无法确定可能出了什么问题。
我能做些什么来解决这个问题是我停止前台服务的方式是错误的,我还能做些什么来获取更多应用程序特定的日志。
我检查了我的代码,发现异常并将它们记录如下:
try {
// Code expected to throw error or exception
} catch (Exception e) {
Log.e(TAG, Log.getStackTraceString(e));
}
我在应用程序中没有任何地方可以绕过异常,它们在任何地方都被缓存和记录。
禁用所有过滤器和 select log cat 上的详细选项时看到的一些错误:
1] `A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x10 in tid 32152 (Thread-1910)`
2]com.my.test.MyActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9
3][Application Error: com.my.test](this:0xb28d3c00,id:809,api:1,p:933,c:252) new GraphicBuffer needed
4]I/WindowState: WIN DEATH: Window{41e99c5 u0 com.my.test.MyActivity}
由于没有人回应,我已经设法找出问题所在,所以问题是
A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x10 in tid 32152 (Thread-1910)
由于引用 MediaRecorder 的线程 运行 停止服务。我正在停止我的服务,如下所示:
stopForeground(true);
stopSelf();
哪种(以上)是停止服务的正确方法。但在停止服务之前,我释放并停止了 MediaRecorder。由于 MediaRecorder 对象在 release(
之后仍然可以被服务外的线程访问)任何导致上述错误的 MediaRecorder 方法调用被抛出并且它与本机代码相关而不是 java 代码因此很难追踪.在下面的问题中进行此错误检查还有其他原因:
Android Fatal signal 11 (SIGSEGV) at 0x636f7d89 (code=1). How can it be tracked down?
由于 personne3000 on this 问题的评论,我的问题已解决。
我的应用程序在 return START_STICKY 后立即崩溃。
我的应用程序中有一个前台服务:
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent != null) {
if (intent.getAction().equals(STARTFOREGROUND_ACTION)) {
// Code to create/update notification and start processing goes here
} else if (intent.getAction().equals(ANOTHER_ACTION)) {
// Code to create/update notification and do another processing
} else if (null != intent && intent.getAction().equals(STOPFOREGROUND_ACTION)) {
stopForeground(true);
stopSelf();
}
}
return START_STICKY; // Last reference point in debugger after which application crashes
}
}
我只试过调试最后一点调试是returnSTART_STICKY;专门针对 STOPFOREGROUND_ACTION 信号,然后它崩溃了。
没有错误,应用程序日志中显示警告,无法确定可能出了什么问题。
我能做些什么来解决这个问题是我停止前台服务的方式是错误的,我还能做些什么来获取更多应用程序特定的日志。
我检查了我的代码,发现异常并将它们记录如下:
try {
// Code expected to throw error or exception
} catch (Exception e) {
Log.e(TAG, Log.getStackTraceString(e));
}
我在应用程序中没有任何地方可以绕过异常,它们在任何地方都被缓存和记录。
禁用所有过滤器和 select log cat 上的详细选项时看到的一些错误:
1] `A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x10 in tid 32152 (Thread-1910)`
2]com.my.test.MyActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9
3][Application Error: com.my.test](this:0xb28d3c00,id:809,api:1,p:933,c:252) new GraphicBuffer needed
4]I/WindowState: WIN DEATH: Window{41e99c5 u0 com.my.test.MyActivity}
由于没有人回应,我已经设法找出问题所在,所以问题是
A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x10 in tid 32152 (Thread-1910)
由于引用 MediaRecorder 的线程 运行 停止服务。我正在停止我的服务,如下所示:
stopForeground(true);
stopSelf();
哪种(以上)是停止服务的正确方法。但在停止服务之前,我释放并停止了 MediaRecorder。由于 MediaRecorder 对象在 release(
之后仍然可以被服务外的线程访问)任何导致上述错误的 MediaRecorder 方法调用被抛出并且它与本机代码相关而不是 java 代码因此很难追踪.在下面的问题中进行此错误检查还有其他原因:
Android Fatal signal 11 (SIGSEGV) at 0x636f7d89 (code=1). How can it be tracked down?
由于 personne3000 on this 问题的评论,我的问题已解决。