windbg(1)】的更多相关文章

感谢博主 http://book.51cto.com/art/200711/59731.htm <Windows用户态程序高效排错>第二章主要介绍用户态调试相关的知识和工具.本文主要讲了排错的工具:调试器Windbg.   第二章 汇编.异常.内存.同步和调试器——重要的知识点和神兵利器 这一部分主要介绍用户态调试相关的知识和工具.包括:汇编.异常(exception).内存布局.堆(heap).栈(stack).CRT(C Runtime).handle/Criticalsection/th…
感谢博主 http://book.51cto.com/art/200711/59874.htm 2.2  读懂机器的语言:汇编,CPU执行指令的最小单元2.2.1  需要用汇编来排错的常见情况 汇编是CPU执行指令的最小单元.下面一些情况下,汇编级别的分析通常是必要的:1. 阅读代码看不出问题,但是跑出来的结果就是不对,怀疑编译器甚至CPU有毛病.2. 没有源代码可以阅读.比如,调用某一个API的时候出问题,没有Windows的源代码,那就看汇编.3. 当程序崩溃,访问违例的时候,调试器里看到的…
1.http://www.cnblogs.com/huangyong9527/category/384128.html 2.http://www.cnblogs.com/pugang/category/415395.html Ret 函数返回地址   ChildEBP RetAddr的解释 摘要: 参考文章http://www.sevenforums.com/crash-lockup-debug-how/34871-advanced-principles-debugging.htmlChildE…
调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令 调试SQLSERVER (一)生成dump文件的方法调试SQLSERVER (二)使用Windbg调试SQLSERVER的环境设置 windbg命令分为标准命令.元命令.扩展命令 标准命令提供最基本的调试功能,不区分大小写.如:bp g dt dv k等 元命令提供标准命令没有提供的功能,也内建在调试引擎中,以.开头.如.sympath .reload等 扩展命令用于扩展某一方面的调试功能,实现在动态加载的扩展模块中…
调试SQLSERVER (二)使用Windbg调试SQLSERVER的环境设置 调试SQLSERVER (一)生成dump文件的方法调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令 大家知道在Windows里面,调试可以分为两个领域: 1.内核态调试 2.用户态调试 一般的程序都是运行在用户态,包括SQLSERVER,SQLServer 会依赖于操作系统的Win32/Win64 API去调用I/O或者其他他需要的服务 用户态程序调试和内核态程序调试是不太一样的,即使…
原文:http://www.debuginfo.com/articles/easywindbg2.html译者:arhat时间:2006年4月14日关键词:CDB WinDbg 保存 dumps 在我们调试不容易重现的问题时,可能想把应用程序状态的快照(内存内容,打开名柄的列表,等等)保存起来,以便日后分析.例如,当我怀疑当前的状态可能包含我试图解决的问题的关键点,而想继续运行应用程序来查看情形怎样发展时,它就很有用了.有时候,我会做一系列的快照,一个接一个,以便稍后我能比较它们,查看在应用程序…
原文:http://www.debuginfo.com/articles/easywindbg.html译者:arhat时间:2006年4月13日关键词:CDB WinDbg 导言你钟情什么样的调试器?如果你问我这个问题,我会回答是“Visual Studio + WinDbg”.我比较喜欢Visual Studio那朴实无华且易操作的接口,更喜欢它能迅速把我需要的信息以可视的形式展示出来.但遗憾的是,Visual Studio调试器无法获取某些信息.例如,假设我想知道哪个线程正在占用特殊的临界…
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册> <WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册> 导航目录 内置帮助命令 调试会话命令 一般信息命令 符号加载命令 模块加载命令 异常分析命令 进程信息命令 线程信息命令 堆栈信息命令 扩展帮助命令 日志扩…
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册> <WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册> 导航目录 扩展加载命令 SOSEX扩展命令 SOSEX 调试命令手册 扩展加载命令 命令 描述 .load .load sosex .load C:\Pro…
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册> <WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册> 导航目录 扩展加载命令 对象审查命令 数据结构审查命令 代码堆栈审查命令 垃圾回收历史审查命令 诊断工具命令 SOS 调试命令手册 扩展加载命令 命令 描述…
好不容易把环境打好了,一定要试试牛刀.我创建了一个极其简单的程序(如下).让我们期待会有好的结果吧,阿门! using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int a; string str; a = ; str…
用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调试. 如…
3 进程与线程 既可以显示进程和线程列表,又可以显示指定进程或线程的详细信息.调试命令可以提供比taskmgr更详尽的进程资料,在调试过程中不可或缺. 3.1 进程命令 进程命令包括这些内容:显示进程列表.进程环境块.设置进程环境. 进程列表 多个命令可显示进程列表,但一般只能在特定情况下使用,它们是:|..tlist.!process和!dml_proc. 竖线命令显示当前被调试进程列表的状态信息,这个命令在本章开头已作过介绍,命令格式如下: |  [进程号] 请注意这里的定语:被调试进程列表…
转载注明>> [作者:张佩][镜像:http://www.yiiyee.cn/Blog] 1. 概述 用户成功安装微软Windows调试工具集后,能够在安装目录下发现四个调试器程序,分别是:cdb.exe.ntsd.exe.kd.exe和Windbg.exe.其中cdb.exe和ntsd.exe只能调试用户程序,Kd.exe主要用于内核调试,有时候也用于用户态调试,上述三者的一个共同特点是,都只有控制台界面,以命令行形式工作. Windbg.exe在用户态.内核态下都能够发挥调试功能,尤其重要…
转载注明>>  [作者:张佩][原文:http://blog.csdn.net/blog_index] 2. 符号与源码 符号与源码是调试过程中的重要因素,它们使得枯燥生硬的调试内容更容易地调试人员读懂.在可能的情况下,应该尽量地为模块加载符号和源码.大部分情况下源码难以得到,但符号却总能以符号文件的形式易于得到. 什么是符号文件呢?编译器和链接器在创建二进制镜像文件(诸如exe.dll.sys)时,伴生的后缀名为.dbg..sym或.pdb的包含镜像文件编译.链接过程中生成的符号信息的文件称…
中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具,Dump文件类似于飞机的黑匣子,记录着生产环境程序运行的状态.本文主要介绍了调试工具WinDbg和抓包工具ProcDump的使用,并分享一个真实的案例.N年前不知谁写的代码,导致每一两个月偶尔出现CPU飙高的现象.我们先使用ProcDump在生产环境中抓取异常进程的Dump文件,然后在不了解代码的…
同事介绍了一篇调试句柄泄露的blog文章,今天有空看了一下,这家伙用视频的方式录下整个调试的过程,学习一目了然,真是有心.鉴于学习的过程总结一下能加深记忆,所以我这里做个记录,感兴趣的朋友可以看这里:http://blogs.msdn.com/ntdebugging/archive/2007/09/14/talkbackvideo-understanding-handle-leaks-and-how-to-use-htrace-to-find-them.aspx 如果你不喜欢英文,那就可以看下面…
|(进程状态) 简介 (|) 命令显示指定进程的状态或当前正在调试你的所有进程. 使用形式 | Process 参数 Process 指定要显示的进程. 如果省略此参数,将显示所有正在调试的进程. 支持环境 模式 仅限用户模式 目标 实时. 崩溃转储 平台 全部 备注 只能在用户模式下指定进程.可以在许多命令之前添加进程符号有关后跟命令.除非在启动调试会话时启用了子进程的调试,否则调试器只能使用一个进程.下面的示例演示如何使用此命令.以下命令显示所有进程. 下面的示例显示如何使用此命令. 下面的…
VisualVM 是一款免费的\集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回收器.执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作.本文主要介绍如何使用 VisualVM 进行性能分析及调优. 概述 开发大型 Java 应用程序的过程中难免遇到内存泄露.性能瓶颈等问题,比如文件.网络.数据库的连接未释放,未优化的算法等.随着应用程序的持续运行,可能会…
一个朋友QQ群里说网站启动后会cpu很高,想要帮忙看一下dump. 1.打开windbg加载dump文件后第一个命令lmf,这个命令显示加载的dll以及路径,这样子可以找个dll来帮忙加载sos,(额,我记不住load那么长的路径啊) 0:000> lmf start end module name …… 00007ffb`a3750000 00007ffb`a375a000 version C:\Windows\System32\version.dll 00007ffb`a37e0000 00…
调试SQLSERVER (一)生成dump文件的方法 调试SQLSERVER (二)使用Windbg调试SQLSERVER的环境设置调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令 我们知道调试程序主要有两种方法 一种是:live debugging (附加进程 使进程hang住) 生产环境最好不要live debugging 一种是:post-mortem debugging or reading dump files (生成dump文件然后进行分析) 现在介绍一…
汇编程序结构 一个显示字符串的汇编程序 程序格式 一.模式定义 二.includelib语句 三.函数声明语句 四.数据和代码部分 Visual C/C++环境 建立工程 汇编程序的调试 一.设置断点 二.内存窗口 三.寄存器窗口 四.监视窗口 常用调试命令 字符串输入.输出 printf sprintf scanf 常用Windows API调用 MessageBox 确定函数的声明语句和库文件 读取CPU标识 WinDbg调试工具 实验题:用MessageBox函数显示CPU信息  源自:h…
一.内存管理概念 1. 物理内存概念(Physical Memory Address)     PC上有三条总线,分别是数据总线.地址总线和控制总线.32位CPU的寻址能力为4GB(2的32次方)个字节.用户最多可以使用4GB的真实物理内存.PC中很多设备都提供了自己的设备内存.这部分内存会映射到PC的物理内存上,也就是读写这段物理地址,其实读写的是设备内存地址,而不是物理内存地址. 2. 虚拟内存概念     虽然可以寻址4GB的内存,但是PC中往往没有如此多的真实物理内存.操作系统和硬件(主…
参考资料: 1. <Windows Internals> 2. Dependency Walker 3. Ntoskrnl.exe 4. Livekd的使用 5. WinDbg的使用(一) 6. WinDbg的使用(二) Now, let's delve into the internal structure & the role each key OS component plays at the high-level achitecture. ^-^ 知识点: ● 先上图,下图是w…
转载的文章,中间有几段需要去学习. byvoid 面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰.看看这些牛人,NOI金牌,开源社区名人,三年级开始写Basic-在跪拜之余我们不禁要想,和这些牛人比,作为绝大部分技术屌丝的同学们,是否真的与国内IT巨头遥不可及呢? 当你打开这个帖子的时候,我已经默认你是此文的目标读者,也就是想进入国内一流互联网企业的非牛人应届生. 你不需要拿NOI的奖,无需是开源社区名人,也用不着发过牛逼的SCI论文.(没错,笔者就是这样的技术屌丝) 请记住,校园招…
原文出处:http://www.cnblogs.com/jacklu/p/4646601.html 本科毕业设计是这方面的工作,所以想开几篇博客来介绍使用WDF开发PCI/PCIe接口卡的驱动程序方法. 在上一篇简要介绍了WDF和开发环境搭建后,本篇将讲述几个WDF中的概念,对开发者了解WDF非常有帮助,属于“内功部分”: 本篇文章结构将没那么清晰,当句句都是作者通过看书.看论文.看MSDN提炼出来的,希望对读者能够有所帮助. 1.WinDBG是唯一的内核驱动调试利器,但是开发PCIe的WDF驱…
在学习笔记(1)中,我们学习了IRP的数据结构的相关知识,接下来我们继续来学习内核中很重要的另一批数据结构: EPROCESS/KPROCESS/PEB.把它们放到一起是因为这三个数据结构及其外延和windows中进程的表示关系密切,我们在做进程隐藏和进程枚举的时候一定会涉及到这3类数据结构,所以这里有必要及时做一下总结,做个学习笔记,理清思路. 1. 相关阅读材料 <windows 内核原理与实现> --- 潘爱民 <深入解析windows操作系统(第4版,中文版)> --- 潘…
在上篇文章.NET对象与Windows句柄(二):句柄分类和.NET句柄泄露的例子中,我们有一个句柄泄露的例子.例子中多次创建和Dispose了DataReceiver和DataAnalyzer对象,但由于忘记调用DataAnalyzer的Stop方法,导致产生句柄泄露.本文假定我们已经发现了泄露现象但还不知道原因,讨论如何在这种情况下分析问题. 一.发现问题 在程序运行约一个小时以后,通过任务管理器发现句柄数超过5000,线程数也超过1000.对于一段只需要并行接收和分析数据的简易代码来说,这…
参考资料: 1. <Windows Internals> 2. Windows Drive Kit 3. Microsoft Windows SDK 4. WDK下载地址 知识点: 1. Windows Drive Kit(WDK)是微软提供的用于Windows平台的设备驱动软件开发工具集.它包括:文档.实例.Build环境和为驱动开发人员提供的开发工具.早期,它以Windows Driver Development Kit(DDK)闻名,支持Windows Driver Model(WDM)…
C#引用类型和值类型的区别——值类型和引用类型在内存中的部署 经常听说,并且经常在书上看到:值类型部署在栈上,引用类型部署在托管堆上.实际上并没有这么简单. MSDN上说:托管堆上部署了所有引用类型.这很容易理解.当创建一个应用类型变量时: object reference = new object(); 关键字new将在托管堆上分配内存空间,并返回一个该内存空间的地址.左边的reference位于栈上,是一个引用,存储着一个内存地址:而这个地址指向的内存(位于托管堆)里存储着其内容(一个Sys…