垃圾回收导致程序崩溃(GC.Collect crash) [问题点数:20分]

Bbs1
本版专家分:0
结帖率 0%
Bbs7
本版专家分:19631
Bbs5
本版专家分:4605
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs5
本版专家分:2863
Bbs1
本版专家分:0
Bbs2
本版专家分:236
Bbs6
本版专家分:6420
Bbs7
本版专家分:16355
请简述GC(垃圾回收)产生的原因,并描述如何避免?
当我用new创建一个对象时,当可分配的内存不足GC就会去回收未使用的对象,但是GC的操作是非常复杂的,会占用很多CPU时间,对于移动设备来说频繁的<em>垃圾回收</em>会严重影响性能。下面的建议可以避免GC频繁操作。 1)减少用new创建对象的次数,在创建对象时会产生内存碎片,这样会造成碎片内存不法使用2)使用公用的对象(静态成员,常量),但是不能乱用,因为静态成员和常量的生命周期是整个应用程序。3)在拼接大量...
GC.Collect()方法放在哪里比较合适
程序运行占内存40多M,觉得应该手工清零内存优化一下,但是又不知道GC.Collect()放在哪里比较合适? 放在Try Catch语句的Finally语句块中?这么做的话要每个Try Catch里都
C# GC.Collect()
用C#写了一个运用ICE组件进行接口通信的服务程序,程序运行很正常,可是在客户端调用ICE接口时出现了大量的数据丢失,而且偶尔还通信不上,服务端最明显的现象就是telnet服务的通信端口时不通(cmd窗口一闪而过),经过大量时间的跟踪测试,最终只能通过tfs上的历史修改记录来一步一步恢复还原,最后问题定位在GC.Collect();这一句代码上:大部份接口都存在这一句代码进行内存回收,而把这句注掉
python中的内存管理和垃圾回收机制(附gc(Garbage Collection)模块常用方法)
python中的内存管理和<em>垃圾回收</em>机制(附gc(Garbage Collection)模块常用方法) python是一种动态的脚本语言,因此它的一些特性和cpp语言等有所不同。python是通过对象和引用来将实际的储存区域中的内容和变量建立联系的。在python中的内存管理和<em>垃圾回收</em>主要有以下几个需要了解的地方:减小频繁申请和释放内存带来的不便利所引入的内存池机制,以及<em>垃圾回收</em>的标记-清除和分代...
Unity游戏的GC(garbage collection)优化
原文:https://unity3d.com/cn/learn/tutorials/topics/performance-optimization/optimizing-garbage-collection-unity-games Unity版本:5.5 引言 游戏运行时使用内存来存储数据,当这些数据不再被使用时,存储这些数据的内存被释放以便于之后这些内存可以被复用。垃圾(G
C程序崩溃的常见原因
写完的C程序在运行时,若弹出系统的异常提示框,则显示程序崩掉了,常见的原因有如下2点: 1)内存越界 具体的代码形式可为数组下标越界和指针移动越界,在操作一个数组或是指针之前,要明确其边界范围,不应访问不属于系统分配的内存区域。 2)指针为空 即此时通过指针访问的内存地址为0,这个地址系统是不允许访问的,系统也不会分配地址为0的内存给程序,这属于一种特殊的内存越界行为。空指针常见于
程序崩溃的调试方法及原因分类
作者 邵发 官网 http://afanihao.cn 本文是 C/C++学习指南(补充篇)- 单步调试 的官方文档。。。<em>程序崩溃</em>的原因分类 1. 函数栈溢出 一个变量未初化、未赋值,就读取它的值。 ( 这属于逻辑问题,往往是粗心大意的<em>导致</em>的 ) 2. 函数栈溢出 (1)定义了一个体积太大的局部变量 (2)函数嵌套调用,层次过深(如无穷递归) 3. 数组越界访问 访问数组元素时,下标越界 4. 指针
Android 关于没有处理异常导致应用程序崩溃的处理
大家在调试过程中,经常会遇见莫名其妙的<em>程序崩溃</em>,那我们应该怎么查看这些崩溃的详情呢? 经百度,有以下方法: 首先是编写两个类 CrashApplication package com.example.endtwo; import android.app.Application; public class CrashApplication extends Applicatio
NSException 程序崩溃日志
最熟悉的陌生人,这是我对NSException的概述,为什么这么说呢?其实很多开发者接触到NSException的频率非常频繁,但很多人都不知道什么是NSException,不知道如何使用NSException。下面从一张截图开始讲起NSException。 崩溃截图.png 上面这张图想必大家都不陌生吧!(卧槽,程序又崩溃了)。 其实控制台输出的日志信息就是NSException产
关于.so库文件引入项目导致crash的若干问题总结
首先正确的将.so文件引入项目,有两种实现方式
GC.Collect()简介
熟悉.NET的开发者们应该都知道里面有一个GC.Collect()吧,它的功能就是强制对所有代进行<em>垃圾回收</em>。下面介绍与之相关的几个术语: 何谓代? 代是指托管内存中不同的区域,对象越老位于的代越靠后,比如:第一次<em>垃圾回收</em>后某个对象未被回收,它可能就会从0代移动到1代,以此类推。 何谓垃圾? 垃圾就是只没有任何对象再和他有引用关系,专业点说就是从这个对象开始找其引用,一直找,如果找到它正在
关于using和System.GC.Collect()对于释放资源的讨论!
如题。。。 以最简单的释放窗体资源为例 可以通过using(){}实现资源释放 也可以在form.FormClosing的时候 通过System.GC.Collect()释放资源 可是区别在哪呢
Windbg命令
1.       g//F5 Run(g)            F7运行到光标处           F9设断点           p(step)//F10 单步run     t//F11单步进入函数run  ctrl+break 暂停 2.       .sympath C:\MyCodesSymbols; SRV*C:\MyLocalSymbols*http://ms
使用内核调试器
介绍   在这篇教程中,我们将会讲述内核调试器的几个基本特性,然后去掌握它。很明显,我们不能涉及到方方面面,所以我们只会概括到其中几个方面,然后让你熟悉调试器的使用。我希望这篇文章能对你有帮助。   设置   为了设置内核调试器,你需要像第一章那样修改BOOT.INI文件。/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200是我们需要设置的选项。如果你不设置速度,
常出现程序崩溃的几种状况
常出现<em>程序崩溃</em>的几种状况 <em>程序崩溃</em>对于程序猿来说,时经常出现的问题,如果你都没有出现过,那大佬快收下我的膝盖吧。<em>程序崩溃</em>一般都发生在运行时期,而崩溃的原因一般都是程序猿的失误所<em>导致</em>的,在这里我就总结了这几种<em>程序崩溃</em>的 读取未赋值的变量 这个错误一般是由于程序猿粗心大意,没有给变量初始化和赋值,<em>导致</em>该变量的值为脏值。 函数栈溢出 函数栈溢出一般是由两种情况引起的: 1、定义了一个...
导致crash等异常的常见原因分析
Crash:客户端程序运行时遇到无法处理的错误或异常,<em>导致</em>退出应用程序(崩溃);1.空指针异常 2.堆栈溢出 3.数组越界 4.应用进程被其他进程中断(如任务管理器) 5.系统反应缓慢,<em>导致</em>应用主线程卡死,请求响应超时 6.CPU负载过高 7.死锁参考: 1.闪退(<em>crash</em>)发生的原因有哪些 https://www.zhihu.com/question/34938240/answer/6049
空指针引起的崩溃
空指针引起的崩溃,以C++为例: #include&amp;lt;cstring&amp;gt; #include&amp;lt;cstdio&amp;gt; #include&amp;lt;iostream&amp;gt; using namespace std; int main() { char *a = &quot;hello world&quot;; char *b = NULL; cout &amp;lt;&amp;lt; a&amp;lt;&amp;lt; endl; /...
Qt项目crash常见原因以及解决办法
1)提示丢失Qt5Core.dll 解决办法: 将Qt5Core.dll所在的目录添加到Windows系统环境变量中 计算机-高级系统设置-环境变量-path-添加-C:\Qt\Qt5.6.0\5.6\mingw49_32\bin 2)提示缺少libstdc++-6.dll 解决办法: 上述目录里是否有这个dll,如果有还报错的话 方法1:粗暴的将这个dll拷贝到debug或者rel
linux下利用coredump技术追查进程崩溃原因
最近项目中出现了一个问题,服务器端程序会突然崩溃退出,我们采取了coredump技术以找到崩溃原因,即确定进程退出时正在执行的函数是哪个,其状态如何。        如果系统开启了coredump,准确的说如果当前的shell环境开启了coredump,当前shell环境下的<em>程序崩溃</em>退出时,会把当时进程的栈的内存状态写入core文件。使用gdb可以查看这个core文件中保存的栈的状态,gdb a
Code Project上一篇介绍windbg的文章---经典!
原文:http://www.allife.org/index.php?job=art&articleid=a_20060529_121555Navigating The Kernel DebuggerIntroductionIn this tutorial, we will be covering a few of the basic features of the kernel de
第二章排错的工具:调试器Windbg(上)
感谢博主 http://book.51cto.com/art/200711/59731.htm 《Windows用户态程序高效排错》第二章主要介绍用户态调试相关的知识和工具。本文主要讲了排错的工具:调试器Windbg。     第二章 汇编、异常、内存、同步和调试器——重要的知识点和神兵利器 这一部分主要介绍用户态调试相关的知识和工具。包括:汇编、异常(exception...
WinDbg+Rotor解析WinForm调用堆栈及实现
前段写过一篇文章“CLR探索系列:深入追踪托管exe加载执行过程”,在那篇文章中,主要是侧重静态代码的分析,追踪源代码的流程一步一步看是如何实现的。这次,写一篇文章,结合Windbg,从一个托管应用程序执行的调用堆栈开始,追踪其调用堆栈中的线索,以及这些托管应用程序执行中调用的功能实现,来展示托管代码的加载和执行的流程和实现。首先还是找一个小白鼠:      p
使用WinDbg —— .NET篇 (十三)
8.3 C#创建Mini dump 8.3.1 概述DbgHelp库 Microsoft提供了DbgHelp库,它包含了一系列关于辅助调试PE格式的API。其相关的dll是DbgHelp.dll,这个文件包含在了操作系统里面,但是早期的操作系统里面(我映像中是在Win7版本之前)这个Dll文件是不可用的。所以如果你的客户还有一些Win XP用户或早期版本的Windows OS用户的
一些Windows API导致的Crash以及使用问题总结
Windows API就没有问题、没有BUG吗?答案是否定的!代码都是写出来,怎么可能完全没有问题呢?下面我们就来看看目前发现有哪些Windows API是有问题的,或者说使用上面有误区的。
memset内存越界导致函数堆栈崩溃的例子
以下代码在vs2005下测试struct st{ int n; DWORD dwID[12]; st() {  memset(dwID, 0, sizeof(st)); //内存越界了,dwID应该为this就不会越界  n = 0; }} void test(){ st tt; printf("run"); return; //内存越界<em>导致</em>堆栈发生错误} 
QLineEdit setText函数导致程序crash的问题解决
很早在程序代码中有个bug,不明原因的崩溃,分析是程序中的指针引起的,查找了很长的时间,没找到,问题依旧。基于此问题出现的频率很低,就此搁浅。 今天偶然在仿真程序是复现了此问题,还定位了调用堆栈,经过一番努力终于解决此大bug。 问题: 我的问题与这个基本描述基本相同,参考链接如下: Fast changing QLineEdit <em>crash</em>ing the application https:/...
Linux程序崩溃调试手段--core使用(续)
core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIGSEGV信号,然后就会core dump)         在程序运行的过程中,有的时候我们会遇到Segment fault(段错误)这样的错误。这种看起来比较困难,因为没有任何的栈、t
内存堆Gc时公认的根对象
内存堆的Gc就是回收内存堆中垃圾对象(非active对象),那么这里就有一个问题了,如何寻找垃圾对象?换个思路来解,就是如何找到所有的active的对象,那么剩下的就是垃圾对象了.HotSpot是通过首先找到所谓的根对象,然后根据这些根对象递归或迭代的搜索所有的引用对象,而找到的这些个对象就是所谓的active对象了.其实,Gc时的根对象是一个与运行时上下文相关的概念,以基于内存分代管理的内存代管
年轻代gc jvm crash
最近公司线上部分服务器出现了gc异常崩溃,检查了下异常崩溃日志,但是应用日志并没有出现很大的异常,但是在日志文件系统发现了hs_err_pid32506.log日志,这基本判定是jvm 异常了 打开日志文件   当时线程崩溃的是GCTaskThread   这个是当时所有Thread的列表,执行的线程exited是GCTaskThread  这块就发现是eden区域满了的时候发生了异常...
JAVA GC垃圾回收(及一次内存泄漏处理)
JAVA GC<em>垃圾回收</em>(及一次内存泄漏处理) JVM内存分布 方法区 Method Area 堆区 heap Area 栈区 Stack Area 程序计数器 本地方法栈 native method stack 直接内存 Object o = new Object()的jvm分布 三个代(新生、老年、持久代) 新生代(年轻代 yong :so s1 eden) 老年代(old) 持久代(永...
lua gc 优化方案
此文章至少适合lua5.1 在我的项目中,变量增减多了,就会在某轮lua gc中可能会大量调用alloc函数(特别指free,可以高达8万次当发生gc的时候,这将占用几十、几百毫秒的时间) 造成cpu曲线不平滑,很容易给人卡顿的感觉 解决方案有两种,一种是云风给出的多线程gc 还有一种则是我正在用的,在不能修改lua引擎代码的情况(比如使用Bolt界面引擎)能很好发挥作用的方案: 我称此
lua的gc过程是怎样的?
-
Native Code崩溃了?是libskia?onPause之后?Bitmap.recycle()线程不安全
有一处很奇怪的Crash,在退出一个Activity的时候Native Code Crash,而且是概率性发生。堆栈中的信息包含libskia.so。经过仔细排查,发现Google Code中有人提到类似问题,是libskia的库负责图像编解码等,而这个库不是线程安全的,那么在对Bitmap调用recycle方法时,可能造成线程崩溃,所以recycle要慎用。...
定位window程序Crash常用工具和方法
一、引言   任何程序正确则只有一种结果,但是错误却有千万种,而众多的错误有些是可容忍,有些则是致命的,如除零错误、堆栈溢出、内存越界等<em>导致</em>程序Crash。由于很多错误并不是发生在开发工作者调试阶段,而是在用户或测试工作者使用阶段;这就需要相关代码维护工作者对于程序异常捕获收集现场信息。   当收集相关信息后,如何定位这些错误是的极为讲究的过程,工具和方法使用得当则可事半功倍,反之事倍功半,所
两个会导致程序崩溃的注意点
1.接口变量为空的情况     当一个文件需要使用另一个文件的接口变量时,如果这个接口变量为空的话会<em>导致</em>程序奔溃,因为访问了一个为nil的变量。这个地方比较隐蔽,因为是直接拿过来就用了,其实在大部分情况下访问nil的变量都会<em>导致</em>崩溃。     因此,在对一个未知变量进行操作的时候最好要进行判断,因为这个变量可能别人给你传的就是nil。 2.NSMutableDiction
Linux 下程序崩溃的信号捕获类
#ifndef SIGNALDBGER_H #define SIGNALDBGER_H void action(int signum); #define Perror(s) { \ printf("Line %d: %s: Error %d: %s\n", \ __LINE__
大对象导致JVM Crash (Jboss) 分析及解决 - JDK 已知bug
最近在一个项目中,web 应用跑一段时间后,  JBoss JVM <em>crash</em> ,web日志中没有任何异常。 存放日志的地方发现有 hs_err_pid25052.log,发现这个文件,就知道是JVM <em>crash</em>了。   打开这个文件然后分析: --------------- T H R E A D --------------- Current thread (0x000000...
BugTrap - C++程序崩溃堆栈信息收集
用于C++<em>程序崩溃</em>后,获取崩溃信息并回传等功能。C++企业级程序必备!
Linux 程序崩溃后的源码定位
Linux <em>程序崩溃</em>后的源码定位: 以centos为例 1. 在系统中运行下列命令: #ulimit -c unlimited #echo "1" > /proc/sys/kernel/core_uses_pid #echo "core-%e-%p-%t" > /proc/sys/kernel/core_pattern   关于这些命令: 先设置崩溃后转储文件大小:ul
android 程序崩溃后重启
第一种 Intent i = new Intent(); i.setAction(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_LAUNCHER); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ...
函数return时崩溃
一个函数,里面用了std::string, char [],
Libgdx 解决部分Android机型锁屏崩溃crash
libgdx使用了全屏模式之后,在某些机型会出现崩溃的情况,两年前就存在了,一直到现在为止,官方都没进行修复,其崩溃原因就是在源码AndroidGraphics.java中的onPause可以看到这样子的一段代码: void pause () { synchronized (synch) { if (!running) return; ...
多线程访问导致崩溃一例
  开发的系统,过一会就嗝屁。这怎么查?   昨天整合同事的功能,结果一跑就崩溃。查下来是传递的缓冲区为空,确认了一下调用之前也确实是空。可是吾代码有专门的线程锁,执行之后才释放,怎么是空呢?被谁释放了?   今天赶到公司,认真查了半天。经过分析,找到了出错原因。总结如下:   简要流程:    线程1构建一个源对象1,把数据复制在缓冲区中;   新建对象2,保存对象1的所有信息,将对象...
C++ 程序崩溃
<em>程序崩溃</em>主要是 内存访问越界,缓冲区溢出,堆栈溢出,空指针,内存泄漏,参数错误(可能<em>导致</em>断言失败)等引起的, 有几种情况可以<em>导致</em>: 1. 断言 include
如何分析JAVA crash
如何分析JAVA <em>crash</em> 为什么程序会Crash? 什么是异常? 如何分析JAVA Crash 程序执行时发生了无法处理的异常 崩溃分为 Java Crash 和 Native Crash
GC.Collect垃圾回收的问题。
最近用.net做的一个项目,对内存管理方面的要求比较高,经常出现内存不能及时回收的情况,每当我下一次申请一块比较大的内存时就outofmemory了。设计层面不存在问题,我就想问下大家,GC.Collect()是不是立即挂起线程,然后进行<em>垃圾回收</em>?我把我想释放的资源dispose,置null,然后调用GC.Collect(),然后下一次再申请比较大的内存时,程序就挂了,内存溢出。。。rn但是让我抓狂的时,有时候可以申请内存,有时候出错。难道是GC.Collcet还没来得及回收???我总不能等着它回收完了我再进行我要的操作吧?用GC.WaitForPendingFinalizers()竟然也没用。有时还是会挂掉,随机的。。。rn我知道一般不应该主动调用GC.Collect(),但是我情况特殊。rn请教csdn技术大牛,这种问题你们怎么解决。
安卓程序监听崩溃检查
Thread.getDefaultUncaughtExceptionHandler() 可以获取系统默认的UncaughtException处理器   通过Thread.setDefaultUncaughtExceptionHandler,设置我们自己的Crash处理器 实现UncaughtExceptionHandler 接口,重写uncaughtException()方法
QT程序崩溃打印崩溃原因
这里我们要用到系统API #include 使用方法: 在外面的程序中添加如下文件 dbg<em>crash</em>.h #ifndef DBGCRASH_H #define DBGCRASH_H #include #include #include #include // 崩溃信息 // using namespace std; const int MAX_ADDRES
c++ 程序崩溃的调试和解决方法
<em>程序崩溃</em>是我以前很头疼的问题,尤其是有时出现,有时不出现的问题,调试也抓不到,这种清空我们通常是通过在exe<em>程序崩溃</em>时生成dump文件来定位的; 首先在代码中  main.cpp中定义函数: LONG WINAPI UnhandledExceptionFilter_SpawDmp(struct _EXCEPTION_POINTERS* ExceptionInfo) {     TCHAR s...
输出程序Crash时的详细堆栈信息(四)
原文地址:http://blog.sina.com.cn/s/blog_48f93b530100fzwt.html 前面几个方案都是直接定位<em>crash</em>的代码位置,但是在比较大型的程序中,只知道这个信息还是远远不够的,我们希望知道更多关于调用函数顺序及变量值等信息,也就是<em>crash</em>时调用堆栈信息。 方案四:SetUnhandledExceptionFilter + StackWalk
glide崩溃解决
 //取消glide加载        if (Build.VERSION.SDK_INT &amp;gt;= Build.VERSION_CODES.JELLY_BEAN_MR1) {            if (Util.isOnMainThread() &amp;amp;&amp;amp; !isFinishing() &amp;amp;&amp;amp; !isDestroyed()) {                Gli...
Qt程序crash信息的捕捉与跟踪Demo
在用qt编写程序时经常会遇到崩溃问题,如果抓取不到<em>crash</em>堆栈信息就会对崩溃问题束手无策,只能对其进行复现,推断。 该程序展示如何获取<em>crash</em>堆栈信息
关于防止App Crash的方法
项目Crash的原因主要有以下几种: unrecognized selector <em>crash</em> (找不到方法) NSTimer <em>crash</em>  (定时器) Container <em>crash</em>(数组越界,插nil等) NSString <em>crash</em> (字符串操作的<em>crash</em>) NSNotification <em>crash</em> (通知未移除) KVO <em>crash</em>(譬如某一属性
添加RequestWindowFeature去除标题崩溃
继承自ActionBarActivity后加上requestWindowFeature(Window.FEATURE_NO_TITLE);应用会崩溃。
设置C++崩溃时生成Dump文件,重现程序崩溃位置等信息
Dump 文件是进程的内存镜像 , 可以把程序的执行状态通过调试器保存到dump文件中 ; Dump 文件是用来给驱动程序编写人员调试驱动程序用的 , 这种文件必须用专用工具软件打开 , 比如使用 WinDbg , VisualStudio 打开 ; 当我们的程序发布出去之后 , 在客户机上是无法跟踪自己代码的 BUG 的 , 所以 Dump 文件对于我们来说特别有用 ; 我们可以通过 .d
从键盘手动强制崩溃
可以直接通过键盘手动造成系统崩溃。在Windows XP中,该功能在使用i8042prt端口键盘(PS/2)时可用,而在Windows Vista和之后的系统在USB键盘上也可用。可以通过注册表键来对按键进行完全的配置。   之前先要做两个预备工作: 1、如果希望创建崩溃转储文件,必须先启用dump文件,选择路径和文件名,并选择dump文件的大小。 2、使用PS/2键盘,必须现在注册表中启
Qt程序crash信息的捕捉与跟踪(qt-mingw)
在用qt编写程序时经常会遇到崩溃问题,如果抓取不到<em>crash</em>堆栈信息就会对崩溃问题束手无策,只能对其进行复现,推断。   目录 一般解决<em>crash</em>问题时有如下步骤: 如何执行以上3步骤,下面我详细介绍如何操作; 步骤1: 步骤2: 步骤3: 网友评论:     一般解决<em>crash</em>问题时有如下步骤:   从软件发行版本能跟获得debug信息,在不同平台下有不同的表现方式,目...
野指针-随机crash问题
是的,你没有看错,要说的就是提高iOS的<em>crash</em>率!欲让其灭亡先让其疯狂,我们当然不是人为制造<em>crash</em>,准确地说,是使隐藏的随机性<em>crash</em>暴露出来,提高测试时的<em>crash</em>率,从而降低版本发布后的<em>crash</em>率。写c、c++代码的同学应该都清楚,<em>crash</em>最多的原因通常有两种,一种是多线程,一种是野指针。这两种<em>crash</em>都带随机性,而且这两种<em>crash</em>有相当一部分都很难区分,甚至大量的<em>crash</em>只
Android常见Crash原因总结(二)
Android平台<em>程序崩溃</em>大家都应该遇到过,force close和ANR应该是大家遇到较多的。 这里把Android平台<em>程序崩溃</em>的各种类型做一个简述和原因列举。 1.ANR(可见ANR): 发生场景:应用发生ANR。 崩溃症状:系统弹出窗口询问用户选择“Force Close”或者“Wait”。        “Force Close”将杀掉发生ANR的
free()后程序崩溃问题
昨天写了一段关于不带头结点的单链表的操作代码,其中只要遇到free()函数,程序就崩溃,cmd.exe一直无法关闭,只有等重启之后才能关闭找了一段时间原因,终于让我找到了,我估计所有出现free后程序崩掉的原因就是这个,内存溢出或者说内存分配出现了问题先上源码:PSListNode BuyNode ( PSListNode *p ) { *p = (PSListNode*)malloc(si
好牛逼的技术——Android运行时Crash自动恢复框架:Recovery
简介 App Crash的恢复,这个想法很早之前就有,目前有些时间就实现了一把,主要是对App运行时发生Crash后,对Activity的堆栈和数据进行恢复,或者重启应用,或者重启并清空缓存,避免因本地的数据类型或格式错误而<em>导致</em>App在读取时一直Crash,Debug模式还包括Crash信息的显示和保存,便于在开发、测试时查看相应CrashInfo。 Crash
如何防止后台线程抛出的异常让程序崩溃退出
如果你的程序抛了异常,你是怎么处理的呢?等待<em>程序崩溃</em>退出?还是进行补救?如果是做 UI 开发,很容易就找到 Dispatcher.UnhandledException 事件,然后在事件中进行补救。如果补救成功,可以设置 e.Handled = true 来阻止异常继续让<em>程序崩溃</em>退出。但是,如果是后台线程抛出了异常呢?并没有 Dispatcher 可以用。所以我们就束手就擒让程序自己退出吗?WPF 和
Windows程序崩溃定位
上传资源见:http://download.csdn.net/detail/zwz1984/9800293 一、目录说明 目录下有三个文件夹:Src、Lib、Tool。 Src存放生成dmp文件(崩溃转储文件)所需要的源文件,需要集成到程序源码中的。 Lib存放生成dmp文件的依赖库(dbghelp.dll)。现在的Window系统(Win7以上)都已集成了此库;如果系统中没有,则
linux c开发: 程序崩溃时保存堆栈信息并解析具体代码行
写服务器程序最怕的是百分之一的概率崩溃了,你却不知道为啥,想重现又重现不出来。所以在崩溃时将当时的堆栈保存下来非常重要。网上有很多文章讲解怎么保存,但我使用了发现可以保存,但是没有函数名称和行号,仍然没法定位问题。在stack overflow上有人说只有动态库的代码才能显示出函数名和行号,想完整显示还需要使用某某第三方开源库,不过我幸好发现使用addr2line命令可以将文件名和行号显示出来,轻松
定位“栈溢出”导致程序崩溃问题
程序在莫名其妙的地方崩溃了,
Activity被回收导致fragment的view或者getActivity为null造成crash问题的分析与解决
转载自:Activity后台运行一段时间回来<em>crash</em>问题的分析与解决 最近做项目的时候碰到一个棘手的问题,花了不少时间才找到原因并解决。特此记录这个被我踩过的坑,希望其他朋友遇到此问题不要调到这坑里去了。 问题描述:       1、背景:我的app中某个界面的Activity是继承FragmentActivity,因为此界面包含两个Fragment。这里我称为FragmentA和Frag...
在应用程序Crash时收集可用的信息
AppCrash 在应用程序<em>crash</em>时收集一些信息,目前收集的信息如下: 设备基本信息:手机品牌,手机品牌类型,手机制造商,手机系统版本,手机SDK版本,手机屏幕分辨率,手机屏幕密度。 手机应用程序内存信息: try { if (am != null) { appMemoryJSON.put(&amp;amp;amp;amp;amp;amp;amp;amp;quot;memoryClass&amp;amp;amp;amp;amp;amp;amp
Android防止应用崩溃
原文https://www.jianshu.com/p/01b69d91a3a8 1 什么是Crash Crash,即闪退,多指在移动设备(如iOS、Android设备)中,在打开应用程序时出现的突然退出中断的情况(类似于Windows的应用<em>程序崩溃</em>)。 2 Crash的成本 假设公司安卓端的日活是20万(对于很多公司来说,要远远...
崩溃上报程序Crash report,自己写的,C#,很不错
崩溃上报程序Crash report,自己写的,C#,很不错,多进程
Qt程序crash信息的捕捉与跟踪
Qt程序<em>crash</em>信息的捕捉与跟踪 在用qt编写程序时经常会遇到崩溃问题,如果抓取不到<em>crash</em>堆栈信息就会对崩溃问题束手无策,只能对其进行复现,推断。 一般解决<em>crash</em>问题时有如下步骤: 1.从软件发行版本能跟获得debug信息,在不同平台下有不同的表现方式,目前只讨论qt-mingw方式,这种方式可以利用修改工程文件配置项编译时讲debug信息加入应用程序当中;当然这会增加发行版应
linux下错误使用pthread_mutex_lock导致程序奔溃问题分析
在进行程序开发过程中,错误使用了pthread_mutex_lock<em>导致</em>程序报如下错误:问题分析:
string?变量进行强解包发生崩溃的解决办法
swift学习第一天:正式学习swift,可能有很多问题不怎么明白,如有问题,请指出!O(∩_∩)O谢谢   1.swift中定义一个变量,系统不会自动赋值,变量不会分配到内存,所以事先初始化!   2. 注释语气:     //MARK: + 说明     //类似oc中的#pragma mark          //TODO: + 说明:     //如果代码中
Yes,搞定---关于CreateRemoteThread引起对象进程崩溃的处理
转载自:http://blog.sina.com.cn/s/blog_7013ba3e0100m38c.html,备用     Of Course不是俺自己研究出来的,整了N久,发现问题所在才在网上找到答案 要做卸载某个进程中的某个已加载模块,baidu网上做法,用CreateRemoteThread,WriteProcessMemory,Of Course(此Of Course确
【iOS开发】静态库导致的运行时崩溃问题
使用其他一些第三方静态库时, 如果没有注意按照文档中的提示进行配置, 很容易在程序运行过程中因 “unrecorgnized selector send to instance xxx” 的异常而崩溃. 而且可以发现, <em>导致</em>崩溃的方法都是Category中的方法.  在苹果官方文档中解释到:  The dynamic nature of Objective-C complica
fclose导致崩溃
使用c读取bmp文件时遇到fclose崩溃问题,调试很久,不得其解。后来发现是因为fread数据块时,buf内存空间分配过小,虽然使用printf打印buf中的内容是正确的,但是此时已经出现指针越界的情况了。这种情况下,fclose会崩溃
C语言调试内存访问出错而引起的程序崩溃问题
在写代码的时候,经常碰到由于内存访问出错而<em>导致</em><em>程序崩溃</em>。当代码量比较多的时候,根本不知道程序错在哪里,只能不断猜测代码出错的地方,将其注释掉还会不会出现<em>程序崩溃</em>,这种方法虽然最后也能找到问题所在,但是会耗费大量时间。 linux下调试通常会生成core dump文件,再结合gdb调试来定位问题,这种方法我没有研究过,我一般在win下的msys2环境下开发,无意中发现了一种非常有效的调试方法,我觉得...
越界操作导致程序崩溃的原理
下面的程序可以正常运行,但是如果注释掉定义变量b这行代码,程序在运行时直接崩溃,请说明这种现象的原因。int main(){cahr *a=new char[32];int b[8];int c[128];c[128]=0;c[129]=0;c[130]=0;strcpy(a,&quot;hello&quot;);cout&amp;lt;&amp;lt;a&amp;lt;&amp;lt;endl;}程序中显然存在内存越界问题,由于通过下标对数组元素...
GC.Collect强制垃圾回收,没有效果
[code=csharp]person p1 = new person();rn p1.Name = "Tam";rnrn WeakReference wkr = new WeakReference(p1);rn p1 = null; rn GC.Collect(); // 强制进行<em>垃圾回收</em>rnrn object wP1 = wkr.Target;rn if (wP1 != null)rn rn Console.WriteLine(((person)wP1).Name);rn rn elsern rn Console.WriteLine("对象已被回收");rn rnrn Console.ReadKey();rn rn rn class personrn rn public string Name get; set; rn [/code]rnp1=Null的时候,代表p1之前指向的内存已经可以被回收了吧?我测试为什么还能打印出来Name呢
Win32环境下的程序崩溃异常定位
1 案例描述作为Windows程序员,平时最担心见到的事情可能就是程序发生了崩溃(异常),这时Windows会提示该程序执行了非法操作,即将关闭。请与您的供应商联系。呵呵,这句微软的“名言”,恐怕是程序员最怕见也最常见的东西了。在一个大型软件的测试过程中,初期出现<em>程序崩溃</em>似乎成了不可避免的事。其实测试中出现<em>程序崩溃</em>并不可怕,反而是测试的成功。作为开发的我们更需要关心的是程序中的哪个函数或哪一行<em>导致</em>了
Android 7.0 广播导致crash问题
Android7.0中使用广播,在unregisterReceiver的时候如果广播没有注册,调用这个方法就会<em>crash</em>,最简单的解决办法就是try catch一下就OK了
crash 调试方法
方法一 该方法的步骤是,首先在你的AppDelegate中定义一个方法, 用于处理异常void uncaughtExceptionHandler(NSException *exception) { NSLog(@"CRASH: %@", exception); NSLog(@"Stack Trace: %@", [exception callStackSymbols]);
关于在非UI线程中更新UI控件不会crash的问题
昨天同事问我一个问题,在Thread中去更新一个Button的状态可行吗?我说当然不行。他告诉我说,那为什么他的程序不会奔溃,我过去一看果然没有奔溃,甚是奇怪。难道是我记错了?于是我Google了一下。发现Android的开发文档中确实说这样是不行的啊。 http://developer.android.com/guide/components/processes-and-threads.h...
Android 程序崩溃自动生成Crash文件
1.添加依赖 implementation 'com.google.code.gson:gson:2.8.5' 2.添加权限 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt; &amp;lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; package=&quot;com.sc...
代码混淆导致程序崩溃原因分析
代码混淆是一种项目加密的方法,混淆后的类和方法会重新命名成a.a.b.c的形式,从而防止反编译破解代码。 如果代码中使用了反射或者调用了JNI等底层代码,代码混淆会<em>导致</em><em>程序崩溃</em>, 例如使用JSONObject.toJavaObject()方法将json转化为对象时,底层会利用反射机制完成转化,混淆后的代码就无法完成反射,从而<em>导致</em>对象的转换失败,抛出空指针异常。   错误代码 val pi...
C++发布后崩溃,如何定位错误
        写程序时,如果事先没有为崩溃情况留下后手。那么程序发布后,一旦发生崩溃。排查起来就十分麻烦了。我们只能对代码进行全面、仔细的推敲、分析。再加上bug的隐蔽性非常好,解决更是难上加难。下面我基于自己目前的认识,谈谈,如果提高排错的效率和解决问题的几率?我觉着以下的几个步骤,都是不可或缺的。一、发布前1、添加崩溃捕获的代码。(1) 示例代码// 处理Unhandled Exceptio...
Linux环境崩溃生成core文件以及调试
Windows环境崩溃问题可根据vs调试工具查看,Linux同样可以查看调用堆栈的信息,只是 需要更改Linux设置,使<em>程序崩溃</em>时候产生core文件。然后gdb调试即可。 1产生core文件方法 产生coredump的条件,首先需要确认当前会话的ulimit –c,若为0,则不会产生对应的coredump,需要进行修改和设置。 ulimit  -c unlimited  (
【经典Android游戏源码17】Android 看图猜人名小游戏源码下载
【经典Android游戏源码17】Android 看图猜人名小游戏源码 相关下载链接:[url=//download.csdn.net/download/new_start_down/8636347?utm_source=bbsseo]//download.csdn.net/download/new_start_down/8636347?utm_source=bbsseo[/url]
怎样做一块好的PCB板下载
本文介绍了制作PCB板的思路,有大量篇幅讲到布局布线的考虑 相关下载链接:[url=//download.csdn.net/download/cywmrc/2076847?utm_source=bbsseo]//download.csdn.net/download/cywmrc/2076847?utm_source=bbsseo[/url]
Ecshop数据库设计详细文档下载
ecshop数据库设计word文档,对学b2c数据库设计的人很有帮助,毕竟是大公司的大牛们设计的 相关下载链接:[url=//download.csdn.net/download/Bird520/2175657?utm_source=bbsseo]//download.csdn.net/download/Bird520/2175657?utm_source=bbsseo[/url]
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链导致显卡价格 长江师范学院大数据
我们是很有底线的