转:windbg调试堆】的更多相关文章

转:http://www.cnblogs.com/dsky/archive/2013/05/15/3079363.html 简评: 代码中采用malloc/free进行堆申请,实际调用的仍然是Heapalloc->RtlCreateHeap.. !heap -a//能够查看当前所有的堆: !heap -a heapaddr//查看到堆的所有信息:堆大小/segment信息(包含哪些heapentry,多大,状态)/heapentry信息/freelist heap就是包含若干segment,se…
堆破坏 所谓的堆破坏,是说没控制好自己的指针,把不属于你分配的那块内存给写覆盖了.这块内存可能是你程序的数据,也可能是堆的管理结构.那么这个会导致怎样的后果呢?可能的情况我们来yy下 把程序里的计算结果覆盖了,这也许会让你重复看了N次代码,校验了N次计算逻辑也搞不明白为何计算结果还是有问题 堆管理结构被破坏了,new/delete,或者malloc/free操作失败 等等等等~ 堆破坏较为理想的情况是被修改的数据会马上导致程序crash,最差的情况是你的堆数据莫名其妙在今天被改了,但明天才cra…
调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令 调试SQLSERVER (一)生成dump文件的方法调试SQLSERVER (二)使用Windbg调试SQLSERVER的环境设置 windbg命令分为标准命令.元命令.扩展命令 标准命令提供最基本的调试功能,不区分大小写.如:bp g dt dv k等 元命令提供标准命令没有提供的功能,也内建在调试引擎中,以.开头.如.sympath .reload等 扩展命令用于扩展某一方面的调试功能,实现在动态加载的扩展模块中…
WinDbg支持以下三种类型的命令: ·        常规命令,用来调试进程 ·        点命令,用来控制调试器 ·        扩展命令,可以添加叫WinDbg的自定义命令,一般由扩展dll提供这些命令 PDB文件 PDB文件是由链接器产生的程序数据库文件.私有PDB文件包含私有和公有符号,源代码行,类型,本地和全局变量信息.公有PDB文件不包含类型,本地变量和源代码行信息,且只包含共有成员的调试信息. Dump文件 利用Dump工具,你可以获得进程的快照信息.一个mini-dump…
Windbg调试.net托管代码需要借助于SOS.dll,.Net 4.0的32位sos.dll的路径在C:\Windows\Microsoft.NET\Framework\v4.0.30319,64为的路径在C:\Windows\Microsoft.NET\Framework64\v4.0.30319,加载哪个版本的sos.dll要与调试的应用程序的位数一致.关于SOS调试扩展的详细介绍请参考:https://msdn.microsoft.com/zh-cn/library/bb190764(…
现在很多的程序都是多语言混合编程的,比如我司的产品,就是用C++/.net clr混合编制的.那么当我们调试这样的程序时,一定要注意,比如有时我们只看到c++的栈和名称,而.net clr的代码确看不到.比如 那要怎样才能看到.net clr的代码和栈呢,下面简单讲一下. 一.SOS.DLL SOS 调试扩展 (SOS.dll) 通过提供有关内部公共语言运行时 (CLR) 环境的信息,帮助你在 Visual Studio 和 Windows 调试器 (WinDbg.exe) 中调试托管程序. 此…
转载收藏于:http://www.cnblogs.com/kekec/archive/2012/12/02/2798020.html  #调试命令窗口 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #使用gflags.exe工具(在windbg所在目录下),让某个进程启动时,拉取windbg进行调试 如下截图:当名称为captcomm.exe的进程启动时,拉起windbg调试 也可通过脚本命令来实现: // 运行c…
调试SQLSERVER (二)使用Windbg调试SQLSERVER的环境设置 调试SQLSERVER (一)生成dump文件的方法调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令 大家知道在Windows里面,调试可以分为两个领域: 1.内核态调试 2.用户态调试 一般的程序都是运行在用户态,包括SQLSERVER,SQLServer 会依赖于操作系统的Win32/Win64 API去调用I/O或者其他他需要的服务 用户态程序调试和内核态程序调试是不太一样的,即使…
asmjit是一个开源项目,使用它可以将代码即时的编译成机器码,也就是所谓的jit技术. 初次接触这个项目,编写了一个demo,学习它的使用方法. 现将编写的demo以及调试jit生成的机器码的过程总结出来,分享给大家 asmjit调用自定义方法的demo 代码如下 #include "asmjit.h" // [Dependencies - C] #include <stdio.h> #include <stdlib.h> #include <strin…
俗话说:万事开头难! 自从来到新公司遇到性能问题后,需要想办法解决这个问题,但是一直没有合适的性能分析工具,然后找到StevenChennet 大神帮忙,他用WinDbg工具远程帮我分析了一个 dump文件,但是只看到键盘 “啪啪啪”,得到了结果,却不是很清楚WinDbg神奇具体如何使用的.结果,第二天,性能问题又来了,总不能每次劳烦大神驾到,所以不得不自己开始学习WinDbg,这里记录一个入门过程. 1,首先,下载并安装WinDbg程序 从下面的地址打开:https://msdn.micros…
由于本人能力有限,翻译不足之处敬请谅解,欢迎批评指正:sunylat@163.com MSDN原文:https://msdn.microsoft.com/zh-cn/library/windows/hardware/hh406283(v=vs.85).aspx 这个章节描述如何用WinDbg调试器执行基本的调试任务. 详细信息都在下面文章里: Debugging a User-Mode Process Using WinDbg Debugging a UWP app using WinDbg O…
上一篇文章我给你介绍了WinDbg的入门,还有你如何能附加到SQL Server.今天的文章,我们继续往前一步,我会向你展示使用WinDbg调试SQL Server查询需要的步骤.听起来很有意思?我们开始吧! 假设在你面前有个简单的查询,你想在WinDbg里调试那个特定的查询.听起来很简单,但一旦你开始考虑这个问题,就会碰到很多问题: 在我特定执行的查询上,我如何标识出正确的工作者线程? 在sqlservr.exe里,我应该在哪里设置断点? 我们来具体讲解下这2个问题. 标识出正确的工作者线程…
这篇文章我想探究下SQL Server里完全不同的领域:如果使用WinDbg(来自针对Windows的调试工具)调试SQL Server.在我们进入枯涩细节之前,我想详细解释下为什么选择这样晦涩的话题来写这篇文章. 缘由 当使用SQL Server时,你到底需不需要像WinDbg这样的调试器?简单回答:从不需要!SQL Server是一个稳定的产品,使用它提供的技术(扩展事件,DMVs/DMFs)进行故障排除已经可以了,从不会用到WinDbg.如果你有疑问的话,在你独自尝试调试讨厌的SQL Se…
用windbg调试C#代码是比较麻烦的,因为windbg是针对OS层级的,而C#被CLR隔了一层,很多原生的命令如查看局部变量dv.查看变量类型dt等在CLR的环境中都不能用了.必须使用针对CLR的扩展命令,比如sos.psscor2中的命令.下面以一个最简单的WPF程序来说明调试的典型步骤,以及典型的坑. 1.用正确版本的windbg.加载正确版本的扩展模块 把程序跑起来,看任务管理器中是32位 or 64位进程,32-bit用windbg x86.64-bit用windbg x64调试. 如…
基础知识推荐阅读<软件调试>的第十八章 内核调试引擎 我在里直接总结一下内核调试引擎的几个关键标志位,也是TP进行反调试检测的关键位. KdPitchDebugger : Boolean 用来表示是否显示的抑制内核调试, 当启动项中包含 /NODEBUG选项时,这个变量会被置为 TRUE KdDebuggerEnabled : Boolean 用来表示内核调试是否被启用.当启动项中包含 /DEBUG 或者/ DEBUGPORT 而且不包含/NODEBUG时,这个变量置为TRUE kiDebug…
WinDbg调试.NET程序入门 俗话说:万事开头难! 自从来到新公司遇到性能问题后,需要想办法解决这个问题,但是一直没有合适的性能分析工具,然后找到StevenChennet 大神帮忙,他用WinDbg工具远程帮我分析了一个 dump文件,但是只看到键盘 “啪啪啪”,得到了结果,却不是很清楚WinDbg神奇具体如何使用的.结果,第二天,性能问题又来了,总不能每次劳烦大神驾到,所以不得不自己开始学习WinDbg,这里记录一个入门过程. 1,首先,下载并安装WinDbg程序 从下面的地址打开:ht…
WinDBG调试.NET程序示例 好不容易把环境打好了,一定要试试牛刀.我创建了一个极其简单的程序(如下).让我们期待会有好的结果吧,阿门! using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int a; stri…
今天利用Windbg(x86)进行了获得句柄表的调试,从中获益良多,对调试步骤和按键又一次进行了熟悉,对于句柄表页的概念更是得到了进一步的清晰认识.windbg调试和句柄表不熟悉的朋友可以借鉴我的调试步骤l来熟悉句柄表基础知识, 调试步骤和获取部分如下. 3: kd> dt _EProcess 891ad030 nt!_EPROCESS +0x0f4 ObjectTable : 0x9eca0ef0 _HANDLE_TABLE3: kd> dt _HANDLE_TABLE 0x9eca0ef0…
配置WinDbg,调试操作系统(双机调试) PS: 设置双机调试之前,请先安装虚拟机,并且安装好XP系统.这里不做演示.直接设置. 一丶WinDbg的设置 1) 配置WinDbg的环境,在path变量里,在变量值后面增加: ;+Windgb的安装目录 2) 在环境变量里新建一个变量名称为_NT_SYMBOL_PATH,变量值为SRV*e:\symbol*http://msdl.microsoft.com/download/symbols,其中e:\symbol为你的symbol的安装时方的目录…
windbg 调试子进程 学习过程中遇到了一个从前未调试过的情景:我正在调试的进程通过CreateProcessW创建了一个子进程,我需要去了解子进程中发生的行为. 那么怎么去调试呢?OD 就有点麻烦了,要patch cc然后 用JIT模式的OD去调试.所以我想起了我的好伙伴windbg! 我想微软爸爸的调试器deal with这个问题应该非常的简单.事实证明的确如此 0x01 写一个用来调试的Demo Father process #include<Windows.h> #include&l…
当我们调试服务进程或子进程时,无法直接用调试加载进程的方式启动,此时需要在启动程序时自动连接调试器方法: 第一步:注册表展开到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options路径下: 第二步:在Image File Execution Options上鼠标右键,新建“项”,项名为你要调试的程序,比如 test.exe: 第三步:在项名上,右键,新建字符串值“De…
解决WinDbg调试Dump文件不同环境mscordacwks.dll版本问题   开发人员提交一个dump文件(Windows Server 2008 R2),当前调试环境Windows Server 2012,加载sos.dl执行~* e !clrstack,提示如下错误: Failed to load data access DLL, 0x80004005 Verify that 1) you have a recent build of the debugger (6.2.14 or n…
http://www.cnblogs.com/woodytu/p/4665427.html http://www.sqlservercentral.com/blogs/aschenbrenner/2014/05/13/debugging-a-sql-server-query-with-windbg/ 上一篇文章我给你介绍了WinDbg的入门,还有你如何能附加到SQL Server.今天的文章,我们继续往前一步,我会向你展示使用WinDbg调试SQL Server查询需要的步骤.听起来很有意思?我…
同事介绍了一篇调试句柄泄露的blog文章,今天有空看了一下,这家伙用视频的方式录下整个调试的过程,学习一目了然,真是有心.鉴于学习的过程总结一下能加深记忆,所以我这里做个记录,感兴趣的朋友可以看这里:http://blogs.msdn.com/ntdebugging/archive/2007/09/14/talkbackvideo-understanding-handle-leaks-and-how-to-use-htrace-to-find-them.aspx 如果你不喜欢英文,那就可以看下面…
WinDbg调试分析 asp.net站点 CPU100%问题 公司为了节省成本,最近有一批服务器降了配置,CPU从8核降到了2核.本身是小站点,访问量也不高,CPU总是会飙到100%而且可以一直持续几个小时,直接强制结束进程可以维持几个小时,几个小时后又一样,运维那边总是受到cpu的警告短信很是苦恼,按理来说就算降低了配置也不至于会让CPU一直100%. 以下就分享本次使用 WinDbg 找出 CPU 100% 问题的经验: 1.创建Dump文件 进程注意是32位的,还是64位.64位的进程可以…
###目的###Windows10上使用windbg调试Chromium Windows. 安装Windows 10 SDK时, 就包含了windbg.exe."C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\windbg.exe"的路径加入Path环境变量,方便从CMD调用windbg.exe.out\default32d\chrome --v=1 --enable-logging --user-data-dir=D:\chr…
windbg是一个内核模式和用户模式调试器,包含在Windows调试工具中.在这里,提供个实践练习,帮助我们开始使用windbg作为用户模式调试器. 用WinDbg调试记事本 1.导航到安装目录,然后打开windbg.exe. 2.在“文件”菜单上,选择“打开可执行文件”.在“打开可执行文件”对话框中,导航到包含notepad.exe的文件夹(例如,C:\windows\system32).输入notepad.exe作为“文件名”.单击“打开”. 3.在windbg窗口底部附近的命令行中,输入以…
目录 驱动第六讲_Windbg连续调试Ring3.与Ring0 一丶Windbg连调试 驱动第六讲_Windbg连续调试Ring3.与Ring0 一丶Windbg连调试 有时候我们调试一个程序.可以使用Windbg.但是如果我们想一个Windbg 调试一个Ring3.并且在调试一个Ring0程序应该怎么做. 第一种方法: 虚拟机安装Windbg.并且调试Ring3. 我们的主 第二种方式: 1.使用命令获取用户控件的进程信息 !process 0 0 2.切换进程.找到你需要调试的进程EPROC…
Windbg是微软开发的免费源码级调试工具.Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件. 1.从http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx下载Install Debugging Tools for Windows 32-bit Version 2.从http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx下…
Windbg是.NET高级调试领域中不可或缺的一个工具和利器,也是日常我们分析解决问题的必备.准备近期写2篇精华文章,集中给大家分享一下如果通过Windbg进行.NET高级调试. 今天我们来一篇入门的文章.首先,Windbg是什么? Windows Debugger,简称WinDbg,.NET 最强分析调试利器.它可以用来: 调试内核模式和用户模式代码 分析Crash dump 分析代码执行时 CPU 寄存器信息 我们可以通过WinDbg调试以下具体问题: 线程阻塞 内存泄露 分析查询运行时线程…