软件调试
文章平均质量分 80
suhuaiqiang_janlay
这个作者很懒,什么都没留下…
展开
-
windows异常处理__try__except
try-except用法 try except是windows 系统独有的异常处理模型,windows的异常处理模式,称为SEH( structured exception handling ), SEH的异常处理模型主要由try-except语句来完成,与标准的try catch相似。与C++异常处理模型使用catch关键字来定义异常处理模块,而SEH是采用__except关键 字来...转载 2019-11-05 20:32:59 · 2705 阅读 · 0 评论 -
WinDbg-如何抓取dump文件
这要分两种情况:第一种情况:如果是Vista或者是Windows2008操作系统就是一个简单的事情,在任务管理器中,切换到"进程"选项卡,右键点击你想要创建dump文件的进程,然后选择"Create Dump File"即可。如果你想要创建dump文件的进程是w3wp.exe,可能会看到有很多w3wp,但不知道哪一个是你要要抓的网站,可以通过下需的命令查看,对于vista或win2008系转载 2014-07-08 15:25:10 · 1214 阅读 · 0 评论 -
Windbg教程-调试非托管程序的基本命令上
Windbg是跟visual studio差不多的一个调试器,可以用来调试非托管程序(native application),也可以调试托管程序(managed application)。它比VS强的地方是你可以使用它来调试Windows操作系统,因此它也被叫做kernel mode debugger,同样为kernel mode debugger的调试器还有随着windbg一起安装的kd.e转载 2013-07-01 15:48:28 · 786 阅读 · 0 评论 -
常常遇到VC下面断点失效的问题,终于找到比较简单靠谱的解决方法了!
整个项目可以这样设置:选择工具-〉选项-〉调试下面的常规选项,在右边的窗口中把“要求源代码与原始版分完全匹配”项的钩去掉。但是如果没有出现断点失效的情况我不支持这种做法,因为这种做法有时会让单步调试的时候运行行与显示行步匹配。 转自:http://blog.sina.com.cn/s/blog_533ab41c0100iraw.html转载 2012-02-24 23:46:43 · 1769 阅读 · 0 评论 -
使用Windbg定位内存泄露
在网上看了两篇文章,整理一下,大致内容如下: 场景一:运行Debug版本程序,用Windbg attach 上去,等程序退出时,基于内存泄露报告,定位内存泄露的位置。 首先使用windbg工具gflags.exe设置内存启动跟踪内存泄露进程的user stack启动方法就是运行下面指令gflags.exe /i test.exe +ust 需要通过gflags.exe工具打原创 2015-08-16 17:01:19 · 3890 阅读 · 0 评论 -
不能设置断点的检查步骤
在调试程序的时候,有的时候你会发现设置的断点不起作用,而且更糟糕的是,一般碰到这种情况的时候都是非常紧急或者是加班到夜已深、人寂静的时候了。正是应了那句玩笑话:“机器机器,越急越气!”。一般发生断点不起作用的话:1. 你首先要判断的是断点是否真的设置上了?a) 如果在Visual Studio里面,你的断点符号是一个实心圆,那么断点的确是设置上了,你要判断的转载 2013-06-28 15:00:04 · 763 阅读 · 0 评论 -
Visual Studio调试之断点进阶篇
在上一篇文章Visual Studio调试之断点基础篇里面介绍了什么是断点,INT是Intel系列CPU的一个指令,可以让程序产生一个中断或者异常。程序中如果有中断或者异常发生了以后,CPU会中断程序的执行,去一个叫做IDT的部件查找处理这个中断(或者异常)的例程(Handler)。IDT是操作系统在启动的时候初始化的,至于IDT的细节问题,例如什么是IDT,怎样编写一个IDT的例程,怎样转载 2013-06-28 14:12:48 · 874 阅读 · 0 评论 -
PDB文件:每个开发人员都必须知道的
一 什么是PDB文件大部分的开发人员应该都知道PDB文件是用来帮助软件的调试的。但是他究竟是如何工作的呢,我们可能并不熟悉。本文描述了PDB文件的存储和内容。同时还描 述了debugger如何找到binay相应的PDB文件,以及debugger如何找到与binay对应的源代码文件。本文适用于所有的Native和 Managed的开发人员。 在开始前,我们先定义2个术语:private转载 2013-06-17 17:22:11 · 704 阅读 · 0 评论 -
《软件调试》要点整理
第一部分:知识点三种异常类型比较:错误异常、陷阱异常、中止异常错误异常中断完成后,会回到错误的指令,继续执行它(例如:页错误,虚拟内存原理);陷阱异常中断完成后,会回到错误指令的下一条,继续执行(例如:断点调试的原理);中止异常,直接导致软件中止运行。进程启动时最先加载的是EXE和NTDLL.DLLNTDLL.DLL:是沟通用户空间和内核空间的桥梁,用户原创 2015-08-16 10:13:28 · 675 阅读 · 0 评论 -
Windbg 教程-调试非托管程序的基本命令下
前面的文章调试非托管程序的基本命令中讲到如何使用windbg在程序中设置断点,既然断点已经设置好了,下一步就是直接执行程序,程序中断以后,第一件事情就是查看堆栈。在windbg中查看堆栈使用k命令就可以,在最新的windbg中(记不得从哪个版本开始了),如果你加载了sos.dll,k命令也可以显示托管程序部分的堆栈信息。下面是程序在_ttol函数入口处中断时的堆栈输出:0:00转载 2013-07-01 15:49:34 · 832 阅读 · 0 评论 -
利用VS2005进行dump文件调试
前言:利用drwtsn32或NTSD进行程序崩溃处理,都可以生成可用于调试的dmp格式文件。使用VS2005打开生成的DMP文件,能很方便的找出BUG所在位置。本文将讨论以下内容:1、 程序编译选项2、 利用VS2005 分析dump文件3、 常见问题讨论一、 程序编译选项PDB files contains all debug information lik转载 2013-06-26 15:19:41 · 808 阅读 · 0 评论 -
Visual Studio调试之断点基础篇
我曾经问过很多人,你一般是怎么调试你的程序的?F9, F5, F11, F……有很多书和文章都是介绍怎么使用Visual Studio编写WinForm啦,、ASP.NET之类的程序;知道如何编写固然重要,但是我觉得程序员可能只会花费30%的时间在编写代码上,剩下的大部分时间都是在调试程序。在网上看到很多人介绍Windbg的用法,但是没有看到几篇讲解使用Visual Studio调试的转载 2013-06-28 11:18:12 · 799 阅读 · 0 评论 -
利用map和cod文件查出崩溃代码行
运行debug版程序,出错信息如下:1.可知出错地址为0x00413202. 在map文件中搜索00413: 2.找到比0x00413202小的最大的是 0x4131e0 ,函数名是crashtest. 3.崩溃地址相对函数地址的偏移是0x00413202-0x4131e0=0x22 在该函数所在cod文件中查找crashtest函数:转载 2013-06-17 17:20:27 · 1759 阅读 · 0 评论 -
Windbg实用手册
Windbg工作中用的不多,所以命令老是记不住,每次使用都要重新查命令,挺烦。趁这次培训的机会好好测试和总结了一下,下次再用就方便多了。在这里一起共享一下,如果有错误,请指正。基本知识和常用命令(1) Windbg下载地址http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx安装完转载 2013-07-02 18:09:18 · 726 阅读 · 0 评论 -
Windbg教程-调试非托管程序的基本命令中
前面的文章调试非托管程序的基本命令上讲到如何在windbg里面启动一个程序并且加载调试符号文件。一旦符号文件加载完毕以后,就可以进行调试了,例如设置断点,查看堆栈信息等等。 因为是刚刚启动程序(main函数还没有机会执行),可以查看源代码了解要设置断点的地方。设置断点可以使用bp、bu和bm来做,其中bp可以根据函数名、指令地址以及源代码文件地址来设置断点。 bp命令是在设置断点过转载 2013-07-01 15:48:59 · 815 阅读 · 0 评论 -
Visual Studio调试之断点技巧篇
不知道能不能算是技巧啦,写出来放到首页贻笑大方而已。函数断点在前面的文章Visual Studio调试之避免单步跟踪调试模式里面我讲了如何设置函数断点,说实话,我个人喜欢设置函数断点,而不是在代码行里面设置断点。一般来说,函数断点在下面几种情形下有用:1. 例如调试一个网站程序,你通过分析网站的日志发现最有可能发生错误的函数,打开调试器并将调试器附加到程序上去,设置函转载 2013-06-28 15:28:27 · 1126 阅读 · 1 评论