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

Windbg分析程序崩溃实践

初入职场的小木,负责维护一个博客系统,后端采用C++编写,部署在Windows服务器上。刚刚熟悉完产品的小木,接到了后台服务的报警,服务器后端偶尔会程序崩溃。...当冷静下来后,小木忽然想起前几天看的两篇文章Windbg调试----Windbg入门>>和>,还没动手过呢,正好练习练习。 2....小木将程序dump拷贝到了自己的办公机器上,准备用预先安装好的Windbg64位进行分析。 3. Windbg分析 小木根据之前学习的内容,先用Windbg 加载dump。...创建一个微软的symbols的缓存目录C:\windowssymbols, 一般windows程序会加载很多微软的dll,而在分析crash的时候,也需要加载微软的symbols 3....) { fprintf(stdout, strContent.c_str()); } 刚松了一口气,小木又疑惑起来,这个函数是用来打印博客标题的log的,一直都用,也测试过,怎么会偶尔导致程序崩溃呢

1.2K30

《探秘程序崩溃:核心转储(Core Dump)分析全攻略》

今天,就让我们一同深入探究程序崩溃时的核心转储分析,探寻其中的奥秘与价值。当程序崩溃时,操作系统会将程序当时的内存状态、寄存器信息等关键数据保存到一个文件中,这个文件就是核心转储文件。...而在 Windows 系统中,也有相应的调试工具和设置来捕获类似的崩溃信息,如使用 Windows 调试工具(WinDbg)配合相关的配置来生成崩溃转储文件(.dmp 文件)。...获取到核心转储文件后,接下来就是分析环节。其中一个重要的分析工具是调试器。对于 Linux 系统下的核心转储文件,GDB(GNU 调试器)是一款强大的分析利器。...在分析核心转储文件时,还需要结合程序的源代码进行综合判断。虽然核心转储文件提供了大量的运行时信息,但只有将这些信息与源代码中的逻辑相结合,才能真正理解程序崩溃的原因。...程序崩溃时的核心转储分析是软件开发过程中不可或缺的重要环节。

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

    使用windbg抓取崩溃文件和分析的过程

    在dump.exe按任意键,重现崩溃路径 崩溃发生,windbg发现异常并中断 ?...至此,我们在客户机器上已经抓到了完整的dmp文件,现在我们回到我们自己的电脑上,配置windbg,并分析这个dump文件。在这个配置中,我们要涉及几块信息的填充。...analyze –v分析dump文件 ctrl+P打开windbg代码目录(工程根目录) ? Ctrl+S打开windbg符号设置框,设置符号文件路径,并勾选reload ?        ...这样windbg就准确定位到异常的位置 ?         这个流程非常适合于分析的场景是: 没有做通过异常方式做保护的程序(否则windbg挂载后会一直陷入中断,非常烦人。...或者程序发现自己被调试,就直接退出了……) VS不便分析的dump 不破坏用户环境(windbg是个非常小巧独立的程序,试想如果我们给客户装个庞大的VS再去调试是非常难以接受的,且会破坏用户的环境)

    2.4K40

    内核转储的设置

    简介 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做 Core Dump(中文有的翻译成“核心转储”)。...核心转储如何产生 上面说当程序运行过程中异常终止或崩溃时会发生 core dump,但还没说到什么具体的情景程序会发生异常终止或崩溃。...要创建核心转储文件的目录不存在。...格式符 说明 %% % 字符本身 %p 被转储进程的进程 ID(PID) %u 被转储进程的真实用户 ID(real UID) %g 被转储进程的真实组 ID(real GID) %s 引发转储的信号编号...由于共享内存的进程中,共享内存的内容是相同的,所以可以只在某个进程中转储共享内存,无需全部转储。 bit 0 转储匿名私有映射。 bit 1 转储匿名共享映射。 bit 2 转储文件支持的私有映射。

    1.9K40

    创建.NET程序Dump的几种姿势

    WinDbg 如果你正在使用 WinDbg 调试一个应用程序,你可以使用.dump命令来生成一个转储文件。.../ma选项允许为所有连接的进程生成一个 minidump: .dump /ma [path] Windows Error Reporting Windows 错误报告允许在应用程序崩溃时生成一个转储文件...你可以查看我以前关于它的帖子。出错时自动创建崩溃转储文件[6] "Tip: 在出错时自动创建一个崩溃转储文件"。...Linux dotnet-dump (Linux) dotnet-dump 全局工具[7]是一种收集和分析.NET 核心应用程序转储的方法。...选择你的应用程序服务 转到 "诊断和解决问题" 选择 "诊断工具" 选择 "收集内存转储" 点击 "收集内存转储 "按钮 几分钟后,转储在配置的存储账户中可用。

    98930

    Windows下dump文件生成与分析

    大家好,又见面了,我是你们的朋友全栈君。 一 生成Dump文件 生成dump文件有三种方式:任务管理器生成,windbg抓取,源码中添加dump转储代码。需要根据实际情况选择。...1.1 任务管理器 在程序崩溃后,先不关闭程序,在任务管理器中找到该程序对应的进程。右键—>创建转储文件。 此时会在默认的目录下创建出一个dump文件。...可以看出,此种方法只适用于程序崩溃但没有立即自行退出的情况。倘若程序故障后自行退出,则此方法就难以应用。...1.2 WinDbg抓取 程序运行崩溃后,先不关闭程序,将WinDbg附加到改进程上。 执行命令:.dump –ma Test.dmp ,则会产生一个Test.dmp的转储文件。...如下程序在程序异常时会自行转储一个名为Test.dmp的dump文件。

    5.1K20

    系统学习Windows客户端开发

    高DPI适配 拖动非标题栏移动窗口的坑 谁抢走窗口的焦点 界面显示乱码,怎么破? 工作线程调用ActiveX接口,有哪些坑?...库的使用 动态库和静态库 动态库与静态库的区别 程序无法启动定位技巧 进程和线程 一个简单实用的线程基类 独立子线程设计 多线程下互斥访问共享资源 自动解锁与提前解锁 C++11 async那些奇怪的问题...网络 一个线程搞定TCP服务器 为什么使用TCP还要自实现心跳 内存管理 Windows栈区存储格式 内存泄漏检测工具DrMemory 崩溃分析 Windbg常用命令(崩溃转储分析篇) Windows...栈区存储格式 Windbg分析不完整堆栈 Windbg分析被捕获的异常堆栈 崩溃分析之非法函数调用 崩溃转储文件收集 调试分析 远程调试 程序自动退出定位技巧 再谈程序自动退出定位技巧 调试子进程刚启动的代码...如何隔离第三方组件的崩溃 软技能 如何有效提升工作效率 其它 发布部分新特性 5G优势及带来的变化 C盘瘦身之大文件夹删除法 高效查看日志排错

    3K30

    应用程序崩溃后如何查看错误日志?

    记录相关信息:如果需要进一步分析,可以将日志内容复制到文本文件中。方法二:检查应用程序特定的日志文件步骤:确定应用程序是否生成自己的日志文件:某些应用程序会在其安装目录或用户数据目录中生成日志文件。...查找崩溃相关的记录:根据时间戳或关键字(如“error”、“exception”)查找崩溃时的日志信息。...方法五:收集崩溃转储文件步骤:打开“本地组策略编辑器”(适用于Windows专业版及以上):按下Win + R键,输入gpedit.msc ,然后按回车。...导航到以下路径:计算机配置 -> 管理模板 -> Windows组件 -> Windows错误报告 启用崩溃转储文件生成:配置“启用内存诊断”策略以确保系统在崩溃时生成内存转储文件。...查找转储文件:转储文件通常位于以下路径:C:\Windows\Minidump使用工具分析转储文件:可以使用Windbg或Visual Studio等工具打开并分析转储文件。

    17110

    SAP 工厂间的转储配置

    ->定义检查规则,如图:  点击2进入下图 至此,可以用MD04或者mmbe看到相关的需求都没有计算包含在内,如果勾选了,就有计算包含在内 四:转储发料可以是一步也可以是两步完成,配置如下: SPRO...->物料管理->采购订单->设定库存移转需求->指派文件类型,一步程序、交货不足允差 如果勾选一步,就是一步能收货,如果没有勾选,就是两步 库存转储的详细操作方法: 一步法和二步法详细的操作步骤如下:...注意:   301 可以在工厂内不同库位、公司间不同工厂间的库位、不同公司不同工厂之间调拨   311 只能在相同的工厂间的不同库位进行调拨 B:二步法: 事务码:MB1B,输入接受工厂、库位和发货工厂...把货物发到在途仓: 303/313  从发货库位转移到收货工厂的在途仓  从在途仓到接受仓:313/315   从在途仓转移到收货工厂的接收仓 C:不带发货单的库存转储   1、ME21N建立UB类型的转储订单或者是...NB类型的,但是行项目为U的采购订单   2、MIGO 发货 移动类型为351   3、MIGO 收货 移动类型为101 D:带发货单的库存转储(一步发) E:带发货单的库存转储(二步法)

    2.6K71

    【译】创建和分析 Java 堆转储(Heap Dumps)

    要进行此操作,我们可以先触发程序抛出 OutOfMemoryError,然后捕获堆转储。接下来我们将分析这个堆转储,以确定可能导致内存泄漏的潜在对象。...查找 OutOfMemoryError 的根本原因 我们现在将通过堆转储分析来找出此错误的原因。这分两步完成: 捕获堆转储 分析堆转储文件,定位可疑原因。 我们可以通过多种方式捕获堆转储。...JVisualVM:通常,分析堆转储需要比实际堆转储大小更多的内存。如果我们试图在开发机器上分析来自大型服务器的堆转储,这可能会出现问题。...分析堆转储(Heap Dump) 我们在堆转储中寻找的是: 内存使用率高的对象 用于识别未释放内存的对象的对象图 可达和不可达对象 Eclipse Memory Analyzer (MAT) 是分析 Java...让我们通过分析我们之前生成的堆转储文件来了解使用 MAT 进行 Java 堆转储分析的基本概念。 我们将首先启动内存分析器工具并打开堆转储文件。

    1.5K40

    10个用于C#.NET开发的基本调试工具

    ProcDump ProcDump是用于保存转储文件的命令行工具。它可以立即或在触发器上生成转储。例如,在崩溃或挂起时创建转储。这是我推荐的用于捕获转储的工具。...以下是它的一些功能: 立即创建转储 创建具有特定间隔的多个转储(例如3个转储,相隔5秒) 一旦超过CPU阈值,就创建转储 如果进程挂起,则创建转储 崩溃时创建转储 若要查找有关ProcDump和Dump...的更多信息,请参阅我的文章:2019年如果创建、使用和调试.NET 应用程序崩溃转储 https://michaelscodingspot.com/how-to-create-use-and-debug-net-application-crash-dumps-in...WinDbg的某些功能仍然是好的。像它的脚本功能一样,易于远程处理和方便的生产调试。你可以将WinDbg复制到生产计算机上,并快速调查转储文件。它不需要像Visual Studio这样的大型安装。...但是我总是发现自己将转储文件复制到我的开发机器上,并使用内存分析器或者Visual Studio打开它们。这样更加有效。因此,我认为WinDbg不再是.NET开发所必需的调试工具。

    2.6K51

    数据块转储及RDBA的转换

    数据块转储及RDBA的转换 原文链接: http://www.eygle.com/internal/How_to_dump_datablock.htm Tuesday, 2004-08-31 17:51...Eygle 很多时候我们在进行进一步研究时需要转储(dump)Oracle的数据块,以研究其内容,Oracle提供了很好的方式,我们通过以下例子简单说明一下: 很多人经常提出的一个问题是,rdba...是如何转换的?...10位,为了向后兼容,从Block号的高位拿出4位作为文件号的高位.这样从6->7的Rowid无需发生变化.而数据文件的个数理论上则扩展到了1022个(去掉全0和全1),在Oracle7中,rowid格式为...:OOOOOOFFFBBBBBBSSS,Oracle通过dataobj#进一步向上定为表空间等,从而使每个表空间的数据文件数量理论上可以达到1022个 举例说明如下: 在Oracle6中: 比如: file

    52430

    硬盘没有初始化怎么恢复数据_初始化磁盘崩溃转储怎么处理

    大家好,又见面了,我是你们的朋友全栈君。 没有初始化是因为分区表损坏了,导致硬盘出现没有初始化。...磁盘显示没有初始化恢复数据办法 工具/软件:光明数据恢复软件 步骤1:软件运行后,直接双击需要恢复文件的磁盘。 步骤2:坐等软件扫描完毕大概需要几分钟到半个小时,稍微耐心等下即可。...步骤3:勾上所有需要恢复的数据,然后点右上角的保存,《另存为》按钮,将勾上的文件COPY出来。 步骤4:等待软件将资料复制完成就可以了 。...注意事项1:没有初始化恢复出来的资料需要暂时保存到其它盘里。 注意事项2:想要恢复没有初始化需要注意,在文件找到之前,不要重建新的分区。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    93520

    Flare-On逆向挑战赛(二)

    Windbg加载完成了之后发现程序崩溃在man.sys这个加载的内核驱动当中,并且崩溃的位置在man + 0x1ce7的位置。...因此,现在要做的就是想办法dump下来这个sys文件然后看看当中到底是什么导致了崩溃。dump文件有两种方法,一种是直接在windbg当中用writemem命令转储0xf000长度的内存。...windbg当中看到的引起崩溃的地方。...转储完成之后会发现这并不是一个正常的sys文件,因为这个文件缺少了正常window下文件的头,它的头部全都是\x00。当时分析到这里的时候一下就断了思路,不知道下一步应该做什么了。...后来第二天重新再看的时候发现这里转储出来的文件中间存在另一个PE的头,将PE之后的部分提取出来会发现是一个dll文件。 尝试 尝试调试分析这个dll文件,看看能不能给我们提供一些有用的线索。

    62720

    渗透新思路 | 仿真环境下内存转储分析和模糊测试的全记录

    如果你了解并使用过这些工具库,那么你肯定非常熟悉内存转储和模糊测试的相关内容。在这篇文章中,我将跟大家分享一种仿真环境下内存转储分析和模糊测试的方法。...在此之前,我一般会将内存转储作为在程序崩溃前访问程序崩溃条件和执行上下文的最后一种方式。内存转储一般会用于调试或崩溃分析模糊测试,有时还会用于DFIR。...这两款工具分别针对的是用户模式(WinDbg中使用.dump /m)和内核模式(WinDbg中使用.dump /f|/ka)转储。...构建BochsCPU会话 我们可以使用kdmp_parser.KernelDumpParser来解析转储,因此转储的解析工作就交给它了。...Windows上的用户模式转储不包括任何这些信息,而只包括与用户模式进程本身相关的信息。

    21410

    使用VS2013分析DMP文件

    当一个发布的.NET应用程序出现app crash,无法通过日志分析异常原因时,就需要通过分析DMP文件了,传统方式是通过WinDbg来分析DMP文件,但是WinDbg用起来不是很方便,其实VS就是一个很好的...DMP文件分析工具,这里我们通过一个简单的控制台项目来分析一个DMP文件。...(2)设置为Release,并编译生成可执行文件   (3)运行.exe程序,出现crash现象,在任务管理器中生成DMP文件(在指定exe上右键菜单中选择创建转储文件) ? ?...二、分析DMP文件   (1)到生成目录下将生成的DMP文件拷贝到Release目录下(和exe、pdb一个目录下)   (2)双击DMP文件会直接进入VS,可以看到Summary信息 ?   ...这是一个很简单的空指针异常,但是一个简单的空指针异常却可以引起程序的崩溃,这也说明我们在编码的时候要时刻注意代码的质量,特别是鲁棒性方面,尤其是需要对NULL指针做过滤。

    1.3K20
    领券