WinDbg.ntsd.cdb.kd和其他任何使用DbgEng打开转储文件的工具都有一个鲜为人知的特性.事实证明,使用DbgEng提供的任何功能,在任何可以打开转储文件(用户转储.内核转储等)的地方,都可以打开PE映像(.exe/.dll/.sys/etc),并让调试器将其视为只包含所选PE映像内容的转储.这实际上是一个相对有用的特性.当您将PE映像作为转储文件打开时,调试器将其映射为映像,就好像它是作为可执行代码加载到内存中一样(尽管它实际上不运行任何代码,但只是将其映射为可执行文件而不是数据…
有时候我们想查看一个正在运行的程序内存中的数据,可以在任务管理器将内存状态保存为转储文件,并使用WinDBG验证,这里我们来试试: 0.安装WinDBG 1.首先写个代码用来测试 一个class public class MyClass { public int AintValue = 123; public static int BintValue = 456; public string AstringValue = "AAA"; public static string Bstr…
这篇文章解释了如何使用驱动程序验证工具来分析崩溃转储文件. 使用Microsoft驱动程序验证工具 如果您曾经使用Windows的调试工具来分析崩溃转储,那么毫无疑问,您已经使用WinDbg打开了一个崩溃转储文件.WinDbg将对崩溃文件执行内部分析,并建议您从!analyze命令开始.该命令输出堆栈以及许多其他信息.执行此操作时,堆栈底部将显示转换为内核模式的线程,然后从那里开始,您向上遍历堆栈以查看是否存在罪魁祸首驱动程序.虽然这是一种可靠的调试技术,但有时崩溃转储或其中的一组将无法分析.内…
利用Dump转储文件获取正式环境程序堆栈状态 服务异常找不到原因时,我们通常通过重新启动服务来尝试解决问题,但是在决定重启之前,请不要立刻重启Windows服务或站点 重启服务会让当前案发现场的内存证据丢失,即便是服务恢复正常了,也无法确认问题发生的原因,利用 Windows Dump 转储文件,可以将正在运行中的服务或站点的堆栈信息保存下来,然后在Visual Studio或WinDbg来查看线上服务的对象信息 Dump转储文件生成 Dump转储文件可以通过 任务管理器 -> 进程 -> 右…
Eclipse Memory Analyzer(MAT)是著名的跨平台集成开发环境 Eclipse Galileo 版本的 33 个组成项目中之一,它是一个功能丰富的 JAVA 堆转储文件分析工具,可以帮助你发现内存漏洞和减少内存消耗.本文主要介绍如何安装配置 Memory Analyzer,并结合一个实例,介绍如何利用 MAT 来进行堆转储文件分析,找到内存泄露的根源. 在 IBM Bluemix 云平台上开发并部署您的下一个应用. 现在就开始免费试用 概述 对于大型 JAVA 应用程序来说,…
程序崩溃的两种主要现象: a. 程序在运行中的时候,突然弹出错误窗口,然后点错误窗口的确定时,程序直接关闭 例如: “应用程序错误” “C++错误之类的窗口” “程序无响应” “假死”等 此种崩溃特点:程序已异常,在你未点出错窗口的确定或其他按,所有错误信息都还保留在PC的内存中,可以直接抓取Dump文件.当然,如果你知道 怎么样操作可以让程序崩溃,也可以用守株待兔的抓取方法抓Dump文件. b.程序在运行中的时候,窗口和进程突然消失,没有任何错误窗体 典型的现象:程序自动关闭 或者玩游戏时,游…
1. 何为转储文件      转储文件也就是我们常说的dump文件.可以把转储文件看成软件的某个时刻的一个快照.转储文件一般都是在软件出现问题时手动生成或者程序自动生成.下面我们介绍几种生成转储文件的方法. 2. 如何得到转储文件 2.1 任务管理器      任务管理器可以说是最易获取的系统工具,同时它具有生成转储文件的功能.但要注意的是在64位操作系统上面,默认启动的是64位的任务管理器.使用任务管理器生成转储文件需要遵循一个原则:用32位任务管理器给32位进程(无论该进程是运行在32位还是…
原文地址:http://www.javatang.com JVM Heap Dump(堆转储文件)的生成 正如Thread Dump文件记录了当时JVM中线程运行的情况一样,Heap Dump记录了JVM中堆内存运行的情况.可以通过以下几种方式生成Heap Dump文件: 使用 jmap 命令生成 jmap 命令是JDK提供的用于生成堆内存信息的工具,可以执行下面的命令生成Heap Dump: jmap -dump:live,format=b,file=heap-dump.bin <pid>…
概述 对于大型 JAVA 应用程序来说,再精细的测试也难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现.JVM 能够记录下问题发生时系统的部分运行状态,并将其存储在堆转储 (Heap Dump) 文件中,从而为我们分析和诊断问题提供了重要的依据. 通常内存泄露分析被认为是一件很有难度的工作,一般由团队中的资深人士进行.不过,今天我们要介绍的 MAT(Eclipse Memory Analyzer)被认为是一个“傻瓜式…
转载地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ma/index.html Eclipse Memory Analyzer(MAT)是著名的跨平台集成开发环境 Eclipse Galileo 版本的 33 个组成项目中之一,它是一个功能丰富的 JAVA 堆转储文件分析工具,可以帮助你发现内存漏洞和减少内存消耗.本文主要介绍如何安装配置 Memory Analyzer,并结合一个实例,介绍如何利用 MAT 来进行堆转储文…
百度百科:内存转储文件 内存转储是用于系统崩溃时,将内存中的数据转储保存在转储文件中,供给有关人员进行排错分析用途.而它所保存生成的文件就叫做内存转储文件. 内存转储文件也被称作虚拟内存,它是用硬盘里的一段空间虚拟成内存来存放程序来运行,由于硬盘的运行速度比内存慢很多,所以虚拟内存应不要很大,操作系统把虚拟内存存在一个文件里,那个文件有多大表示当前操作系统虚拟的内存有多大 . 文章:如何生成转储(dmp)文件--工具篇 文章:WinDbg分析DMP文件方法完全攻略 这个大牛写了很多关于WinDb…
所谓核心转储文件是内含进程终止时内存映像的一个文件.产生条件:特定的信号会引发进程创建一个核心转储文件并终止运行. 包括哪些特定信号,请参见http://man7.org/linux/man-pages/man7/signal.7.html        关于core文件更详细内容http://man7.org/linux/man-pages/man5/core.5.html 接下来我们说一些关于core文件常见的情况和问题. 1.core文件的生成开关和大小限制 输入ulimit -a命令我们…
堆转储是诊断与内存相关的问题(例如内存泄漏缓慢,垃圾回收问题和 java.lang.OutOfMemoryError.它们也是优化内存消耗的重要工具. 有很多很不错的的工具,例如Eclipse MAT和Heap Hero,可以分析堆转储.但是,您需要为这些工具提供以正确的格式和正确的时间点捕获的堆转储. 本文为您提供了捕获堆转储的多个选项.但是,我认为前三个是有效的选择,而其他三个则是个不错的选择. jmap jmap打印堆转储到指定的文件位置.该工具打包在JDK中.可以在JAVA_HOMTE\…
生成堆转储文件 新建项目,设置Eclispe Java堆的大小: (1)限制Java堆大小:将最小值 -Xms参数与最大值-Xmx参数设置一样可避免堆的扩展         -Xmx20m -Xms20m -Xmn10m -Xss1m (2)通过参数:-XX:+HeapDumpOnOutOfMemoryError,可以让VM在出现内存溢出异常时Dump当前内存堆转储快照         -Xmx20m -Xms20m -Xmn10m -Xss1m -XX:+HeapDumpOnOutOfMemo…
Windbg抓取程序崩溃的dmp文件的方法 一.        简介 windbg是在windows平台下,强大的用户态和内核态调试工具.相比较于Visual Studio,它是一个轻量级的调试工具,所谓轻量级指的是它的安装文件大小较小,但是其调试功能,却比VS更为强大.它的另外一个用途是可以用来分析dump数据. 我们使用windbg的主要用途是来抓取IE崩溃产生的dmp文件,然后可以查看是哪个模块导致崩溃,从而协助开发判断分析问题所在. 二.        使用方法 设置WinDbg抓取环境…
1.ulimit -c 判断是否开启转储 为0 则没有开启 2.ulimit -c unlimited 设置转储core大小没有限制 3.设置转储文件位置 echo "/var/core/%t-%e-%p-%c.core"  > /proc/sys/kernel/core_pattern 4.测试程序cpu_test int main(int argc, char **argv) { unsigned char * c = 0x00; *c = 'c'; ; } 5.运行./cp…
测试程序 public class HeapOOM { private static int i = 0; static class OOMObject { } public static void main(String[] args) { List<OOMObject> list = new ArrayList<OOMObject>(); try { while (true) { list.add(new OOMObject()); i++; } } finally { Sys…
内存转储文件是由Windows产生的.以下情况下可能产生内存转储文件: 计算机崩溃蓝屏 内存错误 硬件问题 内存转储文件包含计算机系统崩溃时的详细的参数副本.用于帮助识别导致系统崩溃的原因.Windows可以创建各种类型的内存转储文件.根据类型的不同,内存转储文件可能非常大(最大能达到几十GB).你完全可以通过删除内存转储文件达到清理你的磁盘空间的目的. 删除内存转储文件的步骤: 运行WinUtilities历史清除程序 选中“清理内存转储文件” 点击立即清除 重新启动Windows 10 完成…
https://baike.sogou.com/v63435711.htm?fromTitle=内存转存文件 内存转储是用于系统崩溃时,将内存中的数据转储保存在转储文件中,供给有关人员进行排错分析用途.而它所保存生成的文件就叫做内存转储文件. 内存转储文件也被称作 虚拟内存,它是用硬盘里的一段空间虚拟成内存来存放程序来运行,由于硬盘的运行速度比内存慢很多,所以 虚拟内存应不要很大,操作系统把虚拟内存存在一个文件里,那个文件有多大表示当前操作系统虚拟的内存有多大 . 2性质 编辑 内存转储文件 不…
在Windows下建立隧道可以使用putty,其间会用到ppk文件.在Mac OSX下,同样的功能可以用ssh命令实现.具体是: ssh -D 8088 -Nf user@ip -i myppk.ssh 以上,8088为本地监听端口号:user和ip根据你的实际情况进行替换:myppk.ssh是从ppk文件转换得到的钥匙文件(方法见前一篇). 使用时配置Firefox的网络设置:SOCKS Host: 127.0.0.1 Port: 8088.此处的8088即前面的本地监听端口号. http:/…
在上期文章如何获取JVM堆转储文件中,介绍了几种方法获取JVM的转储文件,其中编程方法是里面唯一一个从JVM内部获取的方法.这里就不演示了其他方法获取正在运行的应用程序的堆转储,重点放在了使用编程来获取转储文件的方法,并演示了如何使用jhat工具浏览/分析生成的二进制堆转储. 你可能想在各个时间点从应用程序中转储多个堆快照,然后使用jhat离线分析这些快照.如何以编程方式从应用程序中转储堆?下面给出了一个例子.您可以从应用程序中转储堆,但必须进行一些编程,如下所示: package com.fu…
在64位系统下,首先要判断进程是32位,还是64位 在Win8之前,进程名后带星号(*)则是32位进程.但Win8.1后,则不显示星号.需要选出“平台”列,来确认32位,还是64位. 在64位系统下的DUMP转储方式 当进程以64位运行时,直接用任务管理器,即可. 当进程以32位运行时,若使用默认任务管理器转储,则转储的DUMP无法正确分析.此时错误现象是,WinDbg可加载sos,但无法执行!XX命令. 比如执行!EEVersion,则报错:SOS does not support the c…
上一篇blog只是从概念上理解Library cache,本篇则是将Library cache从内存中dump出来,看看其结构. 基本命令 ALTER SESSION SET EVENTS 'immediate trace name LIBRARY_CACHE level LL'; 其中LL代表Level级别,对于9.2.0及以后版本,不同Level含义如下: Level =1 ,转储Library cache统计信息 Level =2 ,转储hash table概要 Level =4 ,转储L…
错误 在使用数据泵导入文件时,报错如下 Next 出错原因 在使用参数DUMPFILE指定文件名称时,不能包含路径信息,只可以使用文件名称 Next 解决办法 在使用数据泵进行数据导入导出前,必须要创建Oracle Directory目录,Oracle在操作数据时默认对这个目录进行操作.所以,我们需要把dmp文件放在Directory目录下,然后在DUMPFILE参数中直接指定文件名称即可 impdp HNQY/HNQY@ORCL DIRECTORY=hndir DUMPFILE=DB_2019…
清除了右下角通知栏图标缓存TrayNotify(否则会出现一堆空白图标)清除缓存批处理脚本.bat如何在PE系统环境下清除宿主系统的托盘图标缓存? 清除了右下角通知栏图标缓存TrayNotify(否则会出现一堆空白图标) 清除缓存批处理脚本.bat <wiz_code_mirror>           rem 清理 系统托盘记忆的图标 echo y|reg delete "HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Win…
MySQL will truncate any insert value that exceeds the specified column width. to make this without error try Switch your MySQL mode to not use STRICT. here some docs EDIT: To change the mode This can be done in two ways: Open your "my.ini" file…
dmp文件是使用exp命令导出的,所以使用impdp导入则会报错误. 正确的导入语句为:imp sde/salis@orcl file='E:\sde.dmp' full=y;…
SYNOPSIS 总览 svndumpfilter command [options & args] OVERVIEW 概述 Subversion 是一个版本控制系统,允许保存旧版本的文件和目录 (通常是源代码),保存一个记录何人,何时,为何作出修改等等信息的日志,与 CVS,RCS 或者 SCCS 工具类似. Subversion 保存着主控源文件的单一拷贝.这份拷贝被称为代码 “仓库” (``repository''):它包含所有的信息,从而可以从中获取这些文件在先前任何时间的版本.要获得有…
内核调试入门 内核程序运行在内核态,因此不能像对用户态应用程序那样来调试.关于内核调试方面的知识请参考<软件调试>这本书.目前内核调试主要有以下三种方法. 一是使用硬件调试器,它通过特定的接口(如 JTAG)与 CPU 建立连接并读取它的状态,例如 ITP 调试器. 二是在内核中插入专门用于调试的中断处理函数和驱动程序.当操作系统内核被中断时,这些中断处理函数和驱动程序接管系统的硬件,营造一个可以供调试器运行的简单环境,并用自己的驱动程序来处理用户输入.输出,例如 SoftICE 和 Syse…
RabbitMQ教程(一)——安装配置 一.前言 由于最近在学习RabbitMQ消息队列,但是鉴于网上对于官网介绍的教程比较少或者由于时间长长期未更新,因此决定将对官网的RabbitMQ入门教程进行翻译加总结,当然对于有一定英语阅读能力的同学还是建议直接阅读官网文档! 注:本博客写于2017年8月RabbitMQ官网最新的关于RabbitMQ的介绍,本系列教程均为Java版. 官网地址:https://www.rabbitmq.com 教程地址:https://www.rabbitmq.com/…