精华内容
下载资源
问答
  • 内存转储文件在哪里
    2021-05-08 23:23:21

    我不确定如何在不重复执行此操作的情况下将所有内存转储到文件中(如果有人知道自动获取gdb的方法请告诉我),但以下内容适用于任何一批内存,假设您知道pid:

    $cat /proc/[pid]/maps

    这将是格式(示例):

    00400000-00421000 r-xp 00000000 08:01 592398 /usr/libexec/dovecot/pop3-login

    00621000-00622000 rw-p 00021000 08:01 592398 /usr/libexec/dovecot/pop3-login

    00622000-0066a000 rw-p 00622000 00:00 0 [heap]

    3e73200000-3e7321c000 r-xp 00000000 08:01 229378 /lib64/ld-2.5.so

    3e7341b000-3e7341c000 r--p 0001b000 08:01 229378 /lib64/ld-2.5.so

    选择一批内存(例如00621000-00622000)然后使用gdb作为root连接到进程并转储该内存:

    $gdb --pid [pid]

    (gdb) dump memory /root/output 0x00621000 0x00622000

    然后使用strings命令分析/ root / output,而不是想要整个屏幕上的PuTTY.

    更多相关内容
  • 为服务器核心安装配置内存转储文件10/17/2017本文内容适用于: Windows server 2022、Windows server 2019 Windows Server 2016使用以下步骤为服务器核心安装配置内存转储。步骤1:禁用自动系统页文件管理第一步是...

    为服务器核心安装配置内存转储文件

    10/17/2017

    本文内容

    适用于: Windows server 2022、Windows server 2019 Windows Server 2016

    使用以下步骤为服务器核心安装配置内存转储。

    步骤1:禁用自动系统页文件管理

    第一步是手动配置系统故障和恢复选项。 这是完成剩余步骤所必需的。

    运行以下命令:

    wmic computersystem set AutomaticManagedPagefile=False

    步骤2:为内存转储配置目标路径

    不需要在安装操作系统的分区上安装页面文件。 若要将页面文件放在另一个分区上,必须创建名为 DedicatedDumpFile 的新注册表项。 您可以使用 DumpFileSize 注册表项定义页面文件的大小。 若要创建 DedicatedDumpFile 和 DumpFileSize 注册表项,请执行以下步骤:

    在命令提示符处,运行 regedit 命令以打开注册表编辑器。

    找到并单击以下注册表子项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

    单击 " 编辑" > "新 > 字符串值"。

    将新值命名为 DedicatedDumpFile,然后按 enter。

    右键单击 " DedicatedDumpFile",然后单击 " 修改"。

    在 "值数据 类型 : \ " 中,然后单击 "确定"。

    备注

    将替换为 具有足够的磁盘空间用于分页文件的驱动器,并将替换为 专用文件的完整路径。

    单击 " 编辑 > 新的 > DWORD 值"。

    键入 DumpFileSize,然后按 enter。

    右键单击 " DumpFileSize",然后单击 " 修改"。

    在 " 编辑 DWORD 值" 的 " 基本" 下,单击 " 十进制"。

    在 " 值数据" 中,键入适当的值,然后单击 "确定"。

    备注

    转储文件的大小为 mb (MB) 。

    退出注册表编辑器。

    确定内存转储的分区位置之后,请配置页面文件的目标路径。 若要查看页面文件的当前目标路径,请运行以下命令:

    wmic RECOVEROS get DebugFilePath

    DebugFilePath 的默认目标为%systemroot%\memory.dmp。 若要更改当前目标路径,请运行以下命令:

    wmic RECOVEROS set DebugFilePath =

    设置 为目标路径。 例如,以下命令将内存转储目标路径设置为 C:\WINDOWS\MEMORY。DMP

    wmic RECOVEROS set DebugFilePath = C:\WINDOWS\MEMORY.DMP

    步骤3:设置内存转储类型

    确定要为服务器配置的内存转储类型。 若要查看当前的内存转储类型,请运行以下命令:

    wmic RECOVEROS get DebugInfoType

    若要更改当前内存转储类型,请运行以下命令:

    wmic RECOVEROS set DebugInfoType =

    可以为0、1、2或3,如下所示。

    0:禁用内存转储的删除。

    1:完全内存转储。 当计算机意外停止时,记录系统内存的所有内容。 完整内存转储可能包含收集内存转储时正在运行的进程的数据。

    2:内核内存转储 (默认) 。 仅记录内核内存。 这会在计算机意外停止时加快将信息记录到日志文件中的过程。

    3:小内存转储。 记录可帮助识别计算机意外停止原因的最小有用信息集。

    步骤4:将服务器配置为在生成内存转储后自动重新启动

    默认情况下,在生成内存转储后,服务器将自动重新启动。 若要查看当前配置,请运行以下命令:

    wmic RECOVEROS get AutoReboot

    如果 AutoReboot 的值为 TRUE,则在生成内存转储后,服务器将自动重新启动。 不需要任何配置,你可以继续下一步。

    如果 AutoReboot 的值为 FALSE,则服务器不会自动重新启动。 运行以下命令以更改值:

    wmic RECOVEROS set AutoReboot = true

    步骤5:将服务器配置为覆盖现有的内存转储文件

    默认情况下,当创建新文件时,服务器将覆盖现有的内存转储文件。 若要确定现有内存转储文件是否已配置为要覆盖,请运行以下命令:

    wmic RECOVEROS get OverwriteExistingDebugFile

    如果值为1,则服务器将覆盖现有的内存转储文件。 不需要配置,你可以继续下一步。

    如果该值为0,则服务器不会覆盖现有的内存转储文件。 运行以下命令以更改值:

    wmic RECOVEROS set OverwriteExistingDebugFile = 1

    步骤6:设置管理警报

    确定是否适合管理警报,并相应地设置 SendAdminAlert 。 若要查看 SendAdminAlert 的当前值,请运行以下命令:

    wmic RECOVEROS get SendAdminAlert

    SendAdminAlert 的可能值为 TRUE 或 FALSE。 若要修改现有 SendAdminAlert 值为 true,请运行以下命令:

    wmic RECOVEROS set SendAdminAlert = true

    步骤7:设置内存转储的页面文件大小

    若要检查当前页面文件设置,请运行以下命令之一:

    wmic.exe pagefile

    wmic.exe pagefile list /format:list

    例如,运行以下命令来配置页面文件的初始大小和最大大小:

    wmic pagefileset where name="c:\\pagefile.sys" set InitialSize=1000,MaximumSize=5000

    步骤8:配置服务器以生成手动内存转储

    可以使用 PS/2 键盘手动生成内存转储。 默认情况下,此功能处于禁用状态,并且不能用于通用串行总线 (USB) 键盘。

    若要使用 PS/2 键盘启用手动内存转储,请运行以下命令:

    reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters /v CrashOnCtrlScroll /t REG_DWORD /d 1 /f

    若要确定是否已正确启用此功能,请运行以下命令:

    Reg query HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ i8042prt \ Parameters / v CrashOnCtrlScroll

    您必须重新启动服务器才能使更改生效。 可以通过运行以下命令来重新启动服务器:

    Shutdown / r / t 0

    你可以使用连接到服务器的 PS/2 键盘来生成手动内存转储,方法是在按下右 CTRL 键的同时按住滚动锁定键两次。 这会使计算机 bug 检查并出现错误代码0xE2。 重新启动服务器后,会在步骤2中创建的目标路径中显示一个新的转储文件。

    步骤9:验证是否正确创建了内存转储文件

    你可以使用 dumpchk.exe utlity 来验证是否正确创建了内存转储文件。 dumpchk.exe 实用程序未随 Server Core 安装选项一起安装,因此你必须从具有桌面体验的服务器或从 Windows 10 中运行它。 此外,必须安装 Windows 产品的调试工具。

    使用 dumpchk.exe 实用程序,你可以使用所选的媒体将内存转储文件从 Windows server 2008 的服务器核心安装传输到其他计算机。

    警告

    页面文件可能非常大,因此请仔细考虑传输方法和该方法所需的资源。

    其他参考

    有关使用内存转储文件的常规信息,请参阅Windows 的内存转储文件选项概述。

    展开全文
  • Badoo HPROF工具Badoo HPROF工具是库和工具的集合,其目的是使内存转储不仅仅是用于分析OutOfMemoryErrors的工具。模组hprof-viewer :用于可视化和分析HPROF文件的Java应用程序。 Android示例:包含一个示例应用...
  • 利用Windows内存转储文件对挥发性数据取证,张中文,曹天杰,本文给出了如何对挥发性内存数据进行取证获取有用信息,描述了崩溃转储的配置步骤和转储文件的分析过程。使用Microsoft Debugging Tools��
  • Linux中的内存转储文件路径问题 确定保存路径为/var/core,文件名为core-%e-%p【var目录下有core】 %c 转储文件的大小上限 %e 所dump的文件名 %g 所dump的进程的实际组ID %h 主机名 %p 所dump的进程PID %s 导致...

    Linux中的内存转储文件路径问题

    • 确定保存路径为/var/core,文件名为core-%e-%p【var目录下有core】

      %c 转储文件的大小上限
      %e 所dump的文件名
      %g 所dump的进程的实际组ID
      %h 主机名
      %p 所dump的进程PID
      %s 导致本次coredump的信号
      %t 转储时刻(由1970年1月1日起计的秒数)
      %u 所dump进程的实际用户ID
      
    • root权限下

      vi /etc/sysctl.conf 
      #添加下面两句话
      kernel.core_pattern = /var/core/core-%e-%p
      kernel.core_uses_pid = 1
      #core_uses_pid被设置为1,表示即使core_pattern中没有设置%p,最后生成的core dump文件名仍会加上进程ID。
      
    • root权限下

      cd /proc/sys/kernel
      echo “/var/core/core-%e-%p” >core_pattern
      cd /proc/sys/fs
      echo "1">suid_dumpable
      
    • 参考文件

      Segmentation fault(核心已转储)_zealfory-CSDN博客

      gdb调试命令及程序崩溃时的内核转存core dump-云栖社区-阿里云 (aliyun.com)

    展开全文
  • 反调试和内存转储Android的反调试和反内存转储此项目中使用了一些已知的反调试和反内存转储技术。 重点是不依赖Java API的情况下以隐身方式使用这些技术。 以下是使用的技术Java的反调试JDWP/ proc / self / ...
  • 获取JVM堆内存转储的常用方法

    千次阅读 2020-09-24 23:24:09
    内存转储(Heap Dump),是指JVM堆内存在某一个时刻的快照,一般使用 hprof 格式的二进制文件来保存。 可用于分析内存泄漏问题,以及Java程序的内存使用优化。 常见的内存转储分析工具包括: jhat, JVisualVM, ...

    1. 堆内存转储简介

    堆内存转储(Heap Dump),是指JVM堆内存在某一个时刻的快照,一般使用 hprof 格式的二进制文件来保存。 可用于分析内存泄漏问题,以及Java程序的内存使用优化。

    常见的内存转储分析工具包括: jhatJVisualVM, 以及基于Eclipse的 MAT工具.

    下面介绍获取堆内存转储的常用方法。

    2. 使用JDK内置工具

    JDK内置了很多诊断工具,位于 JDK_HOME/bin 目录下,一般来说这个目录可以包含到系统PATH路径中,可以直接在命令行中调用。
    JDK内置的堆内存转储工具包括:

    2.1 jmap 工具

    jmap 可用来输出JVM内存的统计信息,支持访问本地JVM,以及远程JVM实例。

    使用 -dump 选项来获取堆内存转储,命令为:

    jmap -dump:[live],format=b,file=<file-path> <pid>
    

    -dump: 选项后面, 可以指定以下参数:

    • live: 可选参数;表示只输出存活对象,也就是会先执行一次FullGC来清除可以被回收的部分。
    • format=b: 可选参数, 指定 dump 文件为二进制格式(binary format). 在堆内存转储时,默认就是二进制格式。
    • file: 指定转储文件的保存路径。
    • pid: 指定Java进程的pid。

    使用示例如下:

    jmap -dump:live,format=b,file=/tmp/dump.hprof 12587
    # 或者
    jmap -dump:file=/tmp/dump.hprof 12587
    

    JVM进程的 pid 一般是通过 jps 命令获取,当然也可以使用通过 jcmd 命令,或者 ps 命令查询。

    2.2 jcmd 工具

    jcmd 是一个全能的命令行诊断工具,其工作原理是将要执行的命令发送给具体的JVM实例,所以只支持在本地机器上使用。

    其中的一个命令是 GC.heap_dump, 可以用来获取堆内存转储,只需要指定 pid 即可,命令格式为:

    jcmd <pid> GC.heap_dump <file-path>
    

    使用示例也类似:

    jcmd 12587 GC.heap_dump /tmp/dump.hprof
    

    和 jmap 一样,内存转储文件都是二进制的。
    因为是把命令当做参数传给具体的JVM来执行,所以文件路径最好是绝对路径。

    2.3 JVisualVM 工具

    JVisualVM是一款图形界面工具,可用来监控、分析和诊断Java应用程序。

    img

    图形界面简单优雅,而且功能强大,支持众多插件。

    其中的一个功能是抓取堆内存快照,打开程序,在可见的Java进程上点击鼠标右键,选择“堆内存转储(Heap Dump)”, 即可创建新的内存转储文件,并自动在新标签页中打开。

    在这里插入图片描述

    完成之后,我们可以在基本信息(Basic Info)中看到转储文件的目录信息。

    3. 自动执行堆内存转储

    前面介绍的工具都是手工执行的,有时候,我们希望在发生内存溢出错误 java.lang.OutOfMemoryError 时, JVM自动执行堆内存转储,以方便事后进行排查和分析。 JVM提供了一个命令行启动参数 HeapDumpOnOutOfMemoryError, 使用的格式为:

    java -XX:+HeapDumpOnOutOfMemoryError
    

    如果不用 HeapDumpPath 选项指定转储路径,则会自动保存到启动目录下,文件名的格式为: java_pid<pid>.hprof

    指定 HeapDumpPath 参数的使用示例如下:

    java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<file-or-dir-path>
    

    Java程序在运行过程中如果发生内存溢出,则会在日志中看到类似这样的内容:

    java.lang.OutOfMemoryError: Requested array size exceeds VM limit
    Dumping heap to java_pid12587.hprof ...
    Exception in thread "main" Heap dump file created [4744371 bytes in 0.029 secs]
    java.lang.OutOfMemoryError: Requested array size exceeds VM limit
        at com.baeldung.heapdump.App.main(App.java:7)
    

    这里自动创建的转储文件名称为 java_pid12587.hprof

    可以看到,这个选项非常有用,而且对正常运行的程序来说没有什么开销。 因此强烈建议开启该选项,特别是在生产环境中。

    当然,这个选项也可以通过 HotSpotDiagnostic MBean 来动态设置,比如在JMX客户端之中设置 HeapDumpOnOutOfMemoryError 选项的值为 true:

    在这里插入图片描述

    MBeans 和 JMX 的更多信息请参考: JMX 与相关工具:山高月小,水落石出

    4. JMX方式

    最后,我们来看看怎么通过JMX方式获取堆内存转储。 本质上是调用 HotSpotDiagnostic 这个MBean,其提供了一个 dumpHeap 方法, 参数为:

    • outputFile: 转储文件的路径, 一般以 .hprof 后缀结尾。
    • live: 如果设置为 true, 则只转储存活对象, 和 jmap 的使用类似。

    下面是使用示例:

    4.1. JMX客户端工具

    HotSpotDiagnostic MBean 最容易操作的方式是图形界面客户端, 例如 JConsoleJVisualVM 等。

    打开 JConsole, 连接到指定的Java进程, 切换到 MBeans 页签, 定位到 com.sun.management. 包下面的 HotSpotDiagnostic, 执行对应的 dumpHeap 方法即可。

    在这里插入图片描述

    然后在 p0p1 槽位填写对应的参数 outputFile, live, 执行 dumpHeap 即可。

    4.2. 编程方式调用

    首先,需要获取 MBeanServer 实例,然后再获取系统注册的 HotSpotDiagnosticMXBean MBean, 接着调用 dumpHeap 方法, 示例代码如下:

    public static void dumpHeap(String filePath, boolean live) throws IOException {
        MBeanServer server = ManagementFactory.getPlatformMBeanServer();
        HotSpotDiagnosticMXBean mxBean = ManagementFactory.newPlatformMXBeanProxy(
          server, "com.sun.management:type=HotSpotDiagnostic", HotSpotDiagnosticMXBean.class);
        mxBean.dumpHeap(filePath, live);
    }
    

    请注意 hprof 文件不能被覆盖, 如果文件已存在,则会报错:

    Exception in thread "main" java.io.IOException: File exists
        at sun.management.HotSpotDiagnostic.dumpHeap0(Native Method)
        at sun.management.HotSpotDiagnostic.dumpHeap(HotSpotDiagnostic.java:60)
    

    5. 小结

    本文介绍了几种获取堆内存转储的方法。 简单总结一下:

    1. 强烈建议指定JVM启动参数 HeapDumpOnOutOfMemoryError.
    2. 如果 jmap 不能使用,可以使用其他的替代方式,例如 jcmd、JVisualVM、JMX等等。
    3. 本文对应的代码请参考: GitHub仓库.
    展开全文
  • 系统蓝屏获取内存转储文件

    千次阅读 2017-11-22 15:19:57
    如果系统出现频繁的蓝屏和重启,则需要注意了,这个时候分析蓝屏原因就需要崩溃当时的内存转储文件。 首先当然是要配置好转储文件。 (1)WIN+R 输入sysdm.cpl打开系统属性。 找到高级选项,启动和故障恢复中的设置...
  • 转储是诊断与内存相关的问题(例如内存泄漏缓慢,垃圾回收问题和 java.lang.OutOfMemoryError。它们也是优化内存消耗的重要工具。 有很多很不错的的工具,例如Eclipse MAT和Heap Hero,可以分析堆转储。但是,您...
  • 配置 SQL Server Analysis Services 以生成内存转储文件09/25/2020本文内容本文介绍如何将 SQL Server Analysis Services 配置为自动生成内存转储文件。原始产品版本: SQL Server原始 KB 数: 919711简介本文介绍...
  • 如果您使用我们的软件产品时遇到蓝屏或自动重启的问题,我们的技术支持可能要求提供蓝屏相关的内存转储文件以便分析。请参照以下步骤提供内存转储文件。步骤 1. 禁止自动重启控制面板打开系统,高级页面(XP)或...
  • 用法 android_dump_memory <dump> <pid> <start> <total> [search string]dump:将内存内容转储文件中。 文件名将采用./dump_startaddress_endaddress格式。 show:控制台中打印内存内容。 search:搜索ASCII / ...
  • UE4编写渲染程序,启动之后,Shift+F5停止调试。一个早上之后,C盘剩余空间不足。查阅UE4资料,找到UE4各类缓存文件。才300M,和8G占用差距极远。本来打算写文件树型结构展开显示文件...360显示是“内存转储文件”。...
  • kdump是一种基于kexec的内核崩溃转储技术。kdump需要两个内核,分别是生产内核和捕获内核,生产内核是捕获内核服务的对象,且保留了内存的一部分给捕获内核启动使用。当系统崩溃时,kdump使用kexec启动捕获内核,以...
  • Dump文件有三种:完整内存转储,内核内存转储,小内存转储。System Properties中的高级选项中可以看到这些设置。 Windbg内核调试之四:Dump文件分析-爱码网 (likecs.com) Dump 文件分析很大程度上就是分析蓝屏...
  • 通常,恶意软件文件在执行之前会被打包和混淆,以避免AV扫描仪,但是,执行这些文件时,它们通常会解压缩或将干净版本的恶意软件代码注入内存中。 恶意软件研究人员分析恶意软件时的一项常见任务是,将解压缩后...
  • vc++ 6.0使用dbghelp.dll生成dmp内存转储文件,包含h、lib和dbghelp.dll文件,仅供参考。
  • 一个简单的Python脚本,用于在内存中搜索和转储dex文件 FRIDA-DEXDump Chinese WriteUp 在内存上快速搜索和转储 dex。 功能支持模糊搜索无魔法 dex。 自动将魔法填充到 dex-header 中。 兼容所有安卓版本(支持...
  • 博文系列:Cobalt Strike:解密流量 Cobalt Strike:使用已知私钥解密流量 - 第 1 部分 Cobalt Strike:使用已知...Cobalt Strike:内存转储 - 第 6 部分(当前) Cobalt Strike:概述 – 第 7 部分 这是创建和分析
  • 国外媒体盘点了八款Linux/Unix服务器内存转储工具。一起来看看。LiME(Linux Memory Extractor)LiME(之前叫DMD)是一种可加载内核模块(Loadable Kernel Module,LKM),可获得Linux和Linux设备中的易失性存储器。该工具...
  • EvtxCarv 作者:Chanung Pak、Jaeman Park、HyeonGyu Jang EvtxCarv 是一个用于碎片化 Evtx 文件取证的工具。 支持的平台Windows (VS 2010) C++用法执行EvtxCarv分析图像文件EvtxCarv.exe (-r|-c) 'target image ...
  • dump 转储文件内容

    2021-05-10 07:08:48
    转储数据文件在优化项目中,有时候为了分析表和索引等的碎片、行迁移等情况,需要对数据文件进行转储。把数据库文件(数据文件、日志文件、控制文件等)的内容取出有利于对Oracle数据库内部结构展开分析。Oracle提供的...
  • linux 导出堆转储文件

    2021-05-11 13:08:10
    linux 导出堆转储文件1.切换用户,创建目录2.查询java进程pid3.导出堆转储文件4.查看堆转储文件4.1 jhat4.2 jvisual 1.切换用户,创建目录 su - admin mkdir -p /u01/dump/ 因edas的java应用所属用户为admin,不...
  • 国外媒体盘点了八款Linux/Unix服务器内存转储工具。一起来看看。LiME(Linux Memory Extractor)LiME(之前叫DMD)是一种可加载内核模块(Loadable Kernel Module,LKM),可获得Linux和Linux设备中的易失性存储器。该工具...
  • #从剥离的iOS二进制文件挂钩私钥 就扫描仪而言,我已经完成了。... 它将在内存中找到签名并打印其地址。 签名必须以字节而不是文字字符串形式传递,因此请使用扫描器,如下所示: sudo ./scanner <pid> <Path
  • Windows Dump转储文件

    2021-04-01 08:32:18
    Windows Dump转储文件Dump是什么?如何生成windows dump文件1.注册表2.读入数据总结 Dump是什么? 程序运行时在内存中的数据是动态和易失的,当程序发生崩溃的时候,把这些数据转储为静态的dump文件,这样我们就...
  • 前言 其实,这篇文章早 2021 年就完成了初稿,后面一直没来得及完善(各种加班各种忙),所以一直没来得及整理发布。而且,我从这个案例里学到的东西太多了,很多内容并没有体现本篇文章中,后续有机会一定会再...
  • 1、现场设置程序崩溃时的自动内存转储,得到dump文件  windows 注册表如下项:  //HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/AeDebug  中提供了调试器的相关设置。  ...
  • centos环境:配置生成coredump程序崩溃内存转储文件及gdb调试core文件
  • 支持“无限”的额外内存转储,因此可以将它们全部放入文件夹中,但要注意命名约定。 此存储库中的examples目录包含用于pointer和pointer in pointer搜索pointer in pointer示例内存转储。 当执行pointer搜索时,它...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,012
精华内容 18,404
关键字:

内存转储文件在哪里