首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 中意料之外的应用崩溃以及它们的解决方案

问题 监视产品的崩溃日志注意到一些问题与日俱增。该应用在正常测试条件似乎运行良好,并且崩溃不可复现,直到应用程序从后台任务中进入前台。...由于此时你的所有的单例对象都丢失了,因此当这个 Activity 尝试访问相同的对象,就会遇到空指针异常而崩溃退出。 这是个问题。我们继续讨论解决方案之前,让我们复现一这种情况。...导航到任意一个页面,然后按“主页”按钮。 打开终端,键入以下命令,我们就可以获取应用程序的进程 ID(PID)。...当用户从后台导航回被结束了的应用程序时候,该应用程序将从 SplashActivity 重新启动,就像是一次的启动。 这将防止应用程序访问进程重建过程中可能已丢失的数据,从而防止应用程序崩溃。...解决方案 2: 现在,你肯定已经注意到可以利用“包”对象保存和访问数据。与前面的示例中的操作类似,将每个 Activity / Fragment 中所有必要的信息保存下来。

1.1K10

译 | .NET Core 3.0 对诊断的改进

这些运行时功能可帮助您回答一些常见的诊断问题: 的应用程序是否正常? 为什么的应用程序有异常行为? 为什么的应用程序崩溃? ? 的应用程序是否正常?...为什么的应用程序会爆? 某些情况,仅通过跟踪进程就无法确定导致异常行为的原因。如果进程崩溃或可能需要更多信息(如访问整个流程堆)的情况,则进程转储可能更适合分析。...传统上,您依靠操作系统应用程序崩溃(例如Windows 错误报告)捕获转储,或者使用 procdump 等工具满足某些触发条件捕获转储。...: dotnet dump analyze 在下面的示例中,尝试通过遍历堆来确定已崩溃转储ASP.NET Core托管环境。...(译者注:由于平台限制,无法嵌入视频,请阅读原文查看以上工具的屏幕录像) 结尾 感谢您在 .NET Core 3.0 中尝试的诊断工具。请继续向我们提供反馈,无论是评论中还是 GitHub 上。

1.5K30
您找到你想要的搜索结果了吗?
是的
没有找到

Go语言实践:从新手入门到上线真实的小型服务所遇到的那些坑

根据Go语言编写者的说法: 引用 最初这只是一个有趣的项目,尝试能否不那么神奇的Go语言中复制神奇的Play框架体验。...但在Go中,你会发现error其实也是返回值,函数调用和响应处理中十分常见,而panic则会拖慢应用的性能,并导致崩溃——类似运行异常崩溃为什么要仅仅因为需要函数返回error就这样做呢?...映射与随机崩溃 并发访问,映射并不安全。...你可以猜到下面会发生什么,实际上不同的goroutine会尝试同时访问映射,也可能是读取,也可能是写入,可能会造成panic而导致应用崩溃(我们Ubuntu中使用了upstart脚本,进程停止重启应用...并发访问,Go团队的确考虑过映射的安全性问题,但最终放弃了,因为大多数情况这种方式会造成非必要开销,golang.org的FAQ中有这样的解释: 经过长期讨论后,我们决定在使用映射,一般不需从多个

1K80

Go语言实践:从新手入门到上线真实的小型服务所遇到的那些坑

根据Go语言编写者的说法: 引用 最初这只是一个有趣的项目,尝试能否不那么神奇的Go语言中复制神奇的Play框架体验。...但在Go中,你会发现error其实也是返回值,函数调用和响应处理中十分常见,而panic则会拖慢应用的性能,并导致崩溃——类似运行异常崩溃为什么要仅仅因为需要函数返回error就这样做呢?...映射与随机崩溃 并发访问,映射并不安全。...你可以猜到下面会发生什么,实际上不同的goroutine会尝试同时访问映射,也可能是读取,也可能是写入,可能会造成panic而导致应用崩溃(我们Ubuntu中使用了upstart脚本,进程停止重启应用...并发访问,Go团队的确考虑过映射的安全性问题,但最终放弃了,因为大多数情况这种方式会造成非必要开销,golang.org的FAQ中有这样的解释: 经过长期讨论后,我们决定在使用映射,一般不需从多个

82270

Go语言实践:从新手入门到上线真实的小型服务所遇到的那些坑

根据Go语言编写者的说法: 引用 最初这只是一个有趣的项目,尝试能否不那么神奇的Go语言中复制神奇的Play框架体验。...但在Go中,你会发现error其实也是返回值,函数调用和响应处理中十分常见,而panic则会拖慢应用的性能,并导致崩溃——类似运行异常崩溃为什么要仅仅因为需要函数返回error就这样做呢?...映射与随机崩溃 并发访问,映射并不安全。...你可以猜到下面会发生什么,实际上不同的goroutine会尝试同时访问映射,也可能是读取,也可能是写入,可能会造成panic而导致应用崩溃(我们Ubuntu中使用了upstart脚本,进程停止重启应用...并发访问,Go团队的确考虑过映射的安全性问题,但最终放弃了,因为大多数情况这种方式会造成非必要开销,golang.org的FAQ中有这样的解释: 经过长期讨论后,我们决定在使用映射,一般不需从多个

1.1K60

从目录删除到SYSTEM Shell

ReportQueue准备将报表发送到Microsoft服务器使用。如果由于节流或缺少互联网连接而无法交付,则稍后将尝试交付,并在条件允许的情况交付。...会话0中运行的进程无法桌面上创建对象,只有会话1(默认情况)中的进程才能执行此操作。...通过使用更改的令牌启动命令提示符,我们可以会话中获取服务和执行的安全上下文。 的默认有效负载中,还有一些想做的事情。DLL更严格的权限执行时有帮助的事情。...因此使用该功能WTSSendMessage()活动会话桌面上创建一个对话框。即使无法桌面上创建任何其他可能性,该功能也起作用。显示的数据也记录在事件查看器中。...在这种情况,信息是无价的,因为如果服务查看之前就终止了,那么调查为什么弹出该外壳的原因几乎是不可能的。也喜欢发出哔哔声。

17.8K1312

Go语言实践:从新手入门到上线真实的小型服务所遇到的那些坑

根据Go语言编写者的说法: 最初这只是一个有趣的项目,尝试能否不那么神奇的Go语言中复制神奇的Play框架体验。...但在Go中,你会发现error其实也是返回值,函数调用和响应处理中十分常见,而panic则会拖慢应用的性能,并导致崩溃——类似运行异常崩溃为什么要仅仅因为需要函数返回error就这样做呢?...映射与随机崩溃 并发访问,映射并不安全。...你可以猜到下面会发生什么,实际上不同的goroutine会尝试同时访问映射,也可能是读取,也可能是写入,可能会造成panic而导致应用崩溃(我们Ubuntu中使用了upstart脚本,进程停止重启应用...并发访问,Go团队的确考虑过映射的安全性问题,但最终放弃了,因为大多数情况这种方式会造成非必要开销,golang.org的FAQ中有这样的解释: 经过长期讨论后,我们决定在使用映射

1K70

利用特殊协议加载本地文件, 绕过 HTML5 沙箱, 打开弹窗诸事

继续注册表中按 F3 键,发现了 read: 协议,它引起了的注意力,因为当阅读它的 (javascript)源码,它可能有潜在的 UXSS 漏洞,但是尝试的过程中 Edge 一次次地崩溃了。...但即使一切都保存下来了,当我编写一些可以改变测试页面的 URL 的代码就在一个新窗口中打开它。这只是一种习惯罢了。...崩溃之前断程序的话,这将会变得有意思多了,所以为什么不在 _LoadRMHTML 上面几行设置断点呢?我们检查了 stack-trace,现在我们来看看代码。...WinDbg 显示了我们执行 “ub” 命令的确切偏移量。 0:030> ub EdgeContent!...有了这点知识加上知道它期望是一个文件,我们可以尝试一个硬盘上的完整的路径。因为 Edge AppContainer 内部运行,我们将尝试一个可访问的文件。

2.4K80

使用 Kubernetes 模糊测试

Fuzzing Radare2 的最新和最好的版本 现在知道你在想什么“为什么 $NEW_CI_TOOL 存在使用 Jenkins?”。詹金就像 1985 年的 F150。...所以让我们检查一 gdb> b ne.c:52 崩溃之前,我们两次击中了先前的突破点。现在,当再次遇到断点,我们可以单步执行,直到导致问题的代码。...查看模块参数值的差异,我们可以看到遇到第二个断点访问内存的问题,从而导致崩溃执行 strdup 之前,应检查模块以确保它是有效的字符串。...通过 gdb 中逐步执行应用程序的最终验证显示 strdup 存在相同的问题并且无法访问内存。 最后,我们对崩溃是如何发生的有了一个很好的了解,但是为什么?...某些情况 name不会设置为任何值,因此 strdup 没有字符串可以复制。这显示在下面的代码片段中。幸运的是,这是一个简单的解决方法,并且PR 已入站!

1.5K20

玩转 macos终端,入门指南及进阶技巧

命令由三个部分组成,第一个部分是命令对象 say hi 这个命令中,「say」 是我们的命令对象,我们希望电脑说话;第二个部分是修饰命令对象的关键词,可有可无,若希望电脑说话慢一点,可以输入 say...拖入快速提取路径 当你想要查看当前路径下有什么文件,可以使用 ls 命令,它会列举当前路径的全部文件,若你希查看进阶设定,比如列举当前路径的全部文件并展开所有子文件夹,可以 ls 命令后加上 -...R 的识别符,指令就变成了 ls -R,运行结果如下,可以看到我放在资源文件夹中的所有子文件都被显示出来了。...网上有一个臭名远扬的传言,欺骗别人用 sudo rm -rfv /Cool 来删除系统文件,从而使整个系统崩溃,这条命令绝对不要尝试。 我们来用前面学到的知识分析一为什么这句命令会使得系统崩溃。...你仔细观察可以发现截图里的复制窗口前面的图标损坏了,这是因为当我虚拟机中运行此破坏代码,Parallel Desktop 实际并没有将 fedora 系统独立于沙盒中。

1.5K50

深入分析一个Pwn2Own的优质Webkit漏洞

(ASAN)来完成编译操作,它可以允许我们发生内存崩溃的时候第一间检测到错误信息。...我们可以看到,代码0x6400042d1d29处发生了崩溃:mov qword ptr [rcx + 8*rsi], r8,经分析后我们确认为越界写入所导致的内存崩溃。...我们知道崩溃事件发生在0x6400042d1d29处:mov qword ptr [rcx + 8*rsi], r8。那我们为何不尝试搜索这个地址呢? 没错,我们DFG中找到了: ?...代码使用DFG JIT的分布操作符来创建一个数组,调用了NewArrayWithSpread方法,整个行为发生在gen_func生成的一个函数f中,调用行为发生在一个循环中。...这意味着它将为数组分配一个的butterfly(包含JS对象值的内存空间)。

80340

一文了解perf script中出现的原因

大家好,是程栩,一个专注于性能的大厂程序员,分享包括但不限于计算机体系结构、性能优化、云原生的知识。 今天我们来聊一聊perf的相关命令,更进一步的了解perf。...引 在前面的文章中,我们介绍了可以通过perf script命令解析perf.data,可以通过perf report命令查看函数的调用占比,可以通过perf annotate命令查看热点汇编,那么这些能力...因此,笔者尝试通过strace和对比实验的方法来尝试猜测以下几个问题的答案: perf是如何将perf.data中的地址转换成函数名的?为什么解析出来经常出现[unknown]?...strace是一种Linux系统的工具,它可以帮助你跟踪和调试进程的系统调用。系统调用是应用程序和操作系统之间的接口,它们允许应用程序访问操作系统提供的各种服务。...它是由编译器在编译生成的,通常包含在ELF格式的可执行文件和共享库中。buildid可以用来识别不同版本的程序,以及检查程序是否被篡改过。调试,它还可以用来定位程序崩溃的原因。

33921

再看LayoutInflater,这次你可能又会有的认识

但即使是这样,仍然觉得这个知识点有可以分析的地方,看完之后或许你对LayoutInflater又会有一些的认识。 首先概括一LayoutInflater是用来做什么的。...写《第一行代码》由于很早的章节就要讲RecyclerView的用法,但是却又感觉很难向初学者解释清楚LayoutInflater的相关内容,所以我一直都觉得这块内容没有讲好。...但是这些场景都比较少见,因此大多数情况,我们使用LayoutInflater的inflate()方法都是要指定父布局的。...如果你尝试将第三个参数指定成true,然后重新运行代码,程序将会直接崩溃。...为什么修改第三个参数之后会出现这样的错误呢?我们现在就来分析一。 首先关注一第三个参数的名字是什么,attachToRoot。从字面意思上看,是问我们是否要添加到root上面。

59100

Android异步消息处理机制完全解析,带你从源码的角度彻底理解

开始进入正题,我们都知道,Android UI是线程不安全的,如果在子线程中尝试进行UI操作,程序就有可能会崩溃。...确实,不过即使只是简单new一,还是有不少地方需要注意的,我们尝试程序中创建两个Handler对象,一个主线程中创建,一个子线程中创建,代码如下所示: public class MainActivity...说是不能在没有调用Looper.prepare() 的线程中创建Handler,那我们尝试子线程中先调用一Looper.prepare()呢,代码如下所示: new Thread(new Runnable...主线程中的Handler也没有调用Looper.prepare()方法,为什么就没有崩溃呢?...这样相信大家就都明白了为什么handleMessage()方法中可以获取到之前发送的消息了吧!

72060

Python 在这点上竟被 Julia 和 R 碾压?!

但如果要排序的数字元素很小(例如1000万),Julia 有时会比 R 更快,即使有很多重复项。 三、为什么 R 面对大量重复值排序这么快?...五、基数排序测试结果 以下是开发基数字符串排序算法遇到的几个问题。 问题 1:访问底层字节 要执行基数排序,需要访问基础字节。...如果无论如何都加载 8 个字节,并将不需要的位设置为 0,的经验来看大部分情况是可行的。但仍然可能导致尝试访问程序不可用的内存并导致崩溃。...的理解是: 数据以特定大小的页面加载到内存中(大多数 64 位机器上,大小至少为 4 kb)。 当字节加载,可以从同一页面内的任何位置加载,但跨页边界加载可能会导致程序崩溃。...这可能表明对 MSD 基数排序的实现不是最理想的。 七、为什么 R 大量重复值的排序上比 Julia 和 Python 都快? 许多人指出 R 使用一种字符串驻留来存储其字符串。

1.5K20

Python 再牛,字符串排序上还是被 Julia 和 R 碾压

但如果要排序的数字元素很小(例如1000万),Julia 有时会比 R 更快,即使有很多重复项。 为什么 R 面对大量重复值排序这么快?...基数排序测试结果 以下是开发基数字符串排序算法遇到的几个问题。 问题1:访问底层字节 要执行基数排序,需要访问基础字节。...如果无论如何都加载8个字节,并将不需要的位设置为0,的经验来看大部分情况是可行的。 但仍然可能导致尝试访问程序不可用的内存并导致崩溃。...数据以特定大小的页面加载到内存中(大多数64位机器上,大小至少为4kb)。 2. 当字节加载,可以从同一页面内的任何位置加载,但跨页边界加载可能会导致程序崩溃。 3....这可能表明对 MSD 基数排序的实现不是最理想的。 为什么 R 大量重复值的排序上比 Julia 和 Python 都快? 许多人指出 R 使用一种字符串驻留来存储其字符串。

1.2K30

最好用的Mysql数据库客户端Sequel Pro使用及崩溃解决方案

推荐这款软件的原因很简单,就是最近用它连接Mysql 8直接崩溃,通过各种途径终于找到解决方案了。没有了崩溃的bug,才更值得推荐。 下面就来简单了解一这款软件的功能吧。...如果想执行SQL,这里可以,还可以配合快捷键command + R快速执行: ? 表结构(structure)的界面,下方有以下区域可以操作: ?...安全连接支持 在建立连接界面,还可以通过基于SSH的形式进行连接,增加访问数据库的安全性: ? 图中配置了本机的公钥,也就限制了访问数据库的来源,必须公钥服务器上开放的机器才能够进行连接。...Mac系统会出现关闭崩溃、连接Mysql 8 崩溃等问题。 那么,如何解决呢?花了一上午的时间终于找到解决方案了。...这也官方提供的解决方案,但是实验了,没成功,应该是xcode配置key chain什么的出问题了。尝试解决,但没能成功。

5.1K30

Redis分布式锁的正确实现方式(Java版)

当某个方法或代码使用锁,同一刻仅有一个线程执行该方法或该代码段。...线程锁只同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如synchronized是共享对象头,显示锁Lock是共享某个变量(state)。...看一流程图: 在这个流程,不会导致死锁。 采用Jedis作为Redis客户端的api,下面来看一具体实现的代码。 (1)首先要创建一个Redis连接池。...乍一看好像和前面的set()方法结果一样,然而由于这是两条Redis命令,不具有原子性,如果程序执行完setnx()之后突然崩溃,导致锁没有设置过期时间。那么将会发生死锁。...那么为什么执行eval()方法可以确保原子性,源于Redis的特性,下面是官网对eval命令的部分解释: 简单来说,就是eval命令执行Lua代码的时候,Lua代码将被当成一个命令去执行,并且直到eval

1.2K10

Android 9.0适配及部分特性介绍

1、Android 9.0应用迁移 1.1 概述 最开始针对速贷进行Android9.0版本的适配使用的是真机是vivo X21A,将targetSdkVersion升到28,运行发现网络请求全报...尝试访问受限制的接口,会生成 NoSuchFieldException 和 NoSuchMethodException 之类的错误。...如果您尝试不传递此标志的情况启动 Activity,则该 Activity 不会启动,系统会在日志中输出一则消息。...如果您的应用需要访问设备的硬件序列号,您应改为请求 READ_PHONE_STATE 权限,然后调用 getSerial()。 其中星号*标注的是项目中添加的修改部分。...,点击测试入口,页面会崩溃 3、需支持支付宝h5支付 4、偶现人脸识别不成功,反复进入活体认证页面 针对问题一和二:测试了Android9.0的模拟器以及google pixel(9.0)真机,发现并没有这些问题

3.3K40

美团一面:为什么线程崩溃崩溃不会导致 JVM 崩溃

大家好,是坤哥 网上看到一个很有意思的美团面试题:为什么线程崩溃崩溃不会导致 JVM 崩溃,这个问题看了不少回答,但发现都没答到根上,所以决定答一答,相信大家看完肯定会有收获,本文分以下几节来探讨...线程崩溃,进程一定会崩溃吗 进程是如何崩溃的-信号机制简介 为什么 JVM 中线程崩溃不会导致 JVM 进程崩溃 openJDK 源码解析 线程崩溃,进程一定会崩溃吗 一般来说如果线程是因为非法访问内存引起的崩溃...,那么进程肯定会崩溃为什么系统要让进程崩溃呢,这主要是因为进程中,各个线程的地址空间是共享的,既然是共享,那么某个线程对地址的非法访问就会导致内存的不确定性,进而可能会影响到其他线程,这种操作是危险的...,崩溃 s[] = 'H'; } 访问了进程没有权限访问的地址空间(比如内核空间) // 针对进程的内核空间写入数据,崩溃 *p = ; } 访问了不存在的内存,比如 以上错误都是访问内存的错误.../openjdk-jdk8u,有兴趣的可以下载来看看 我们只要研究 Linux 的 JVM,为了便于说明,也方便大家查阅,把其中关于信号处理的关键流程整理了(忽略其中的次要代码) 可以看到,启动

2K20
领券