FW:VS 设置断点的方法_拔剑-浆糊的传说_新浪博客

cliche la

Visual Studio调试之断点基础篇[ http://www.cnblogs.com/killmyday/archive/2009/09/26/1574311.html
Visual Studio调试之断点技巧篇[ http://blog.csdn.net/Donjuan/article/details/4618717
Visual Studio调试之断点进阶篇[ http://blog.csdn.net/Donjuan/article/details/4600546
理解First Chance和Second Chance避免单步调试[ http://blog.csdn.net/Donjuan/article/details/3859160

这个人的博客列了很多调试相关博文: http://blog.csdn.net/Donjuan/article/category/492411/1
这是第一部分,Windows平台下的应用程序调试技术讲座视频, 视频购买地址: http://product.china-pub.com/3502590    对于研发公司IT支持人员,项目或开发经理,设置事后可跟踪的BUG跟踪以及分析服务系统,建议选择观看: 1、应用程序调试技术第1讲 准备调试环境 2、应用程序调试技术第2讲 管理符号文件与源代码 3、应用程序调...
2012-03-01 15:35  阅读(3164)  评论(0)
这是第一部分,Windows平台下的应用程序调试技术讲座视频, 视频购买地址: http://product.china-pub.com/3502590     第1讲 准备调试环境      调试符号文件的作用;   创建符号文件的方法;   在调试器里有无符号文件的区别;   公开符号版本和私有符号版本的区别;   创建公开符号文件的方法;...
2012-03-01 15:34  阅读(2801)  评论(0)
讲完Visual Studio调试之断点技巧篇以后,翻翻以前看得一些资料和自己写的一些文章,发现还有几个关于中断程序的技巧在前面的文章里面遗漏了,决定还是在这里总结一下。当然啦,如果你知道这些技巧,忽略这篇文章好了,:)在程序启动的时候将调试器附加上去可能有人会对这个问题有一些争议,因为大部分情况下我们只需要在调试器(Debugger)里面直接启动被调试程序(Debuggee)就可以在程序...
2009-10-10 11:28  阅读(3813)  评论(2)
不知道能不能算是技巧啦,写出来放到首页贻笑大方而已。函数断点在前面的文章Visual Studio调试之避免单步跟踪调试模式里面我讲了如何设置函数断点,说实话,我个人喜欢设置函数断点,而不是在代码行里面设置断点。一般来说,函数断点在下面几种情形下有用:1.       例如调试一个网站程序,你通过分析网站的日志发现最有可能发生错误的函数,打开调试器并将调试器附加到程序上去,设置函数断点...
2009-09-29 21:38  阅读(3894)  评论(1)
在上一篇文章Visual Studio调试之断点基础篇里面介绍了什么是断点,INT 是Intel系列CPU的一个指令,可以让程序产生一个中断或者异常。程序中如果有中断或者异常发生了以后,CPU会中断程序的执行,去一个叫做IDT的部件查找处理这个中断(或者异常)的例程(Handler)。IDT是操作系统在启动的时候初始化的,至于IDT的细节问题,例如什么是IDT,怎样编写一个IDT的例程,怎样 初始...
2009-09-27 12:37  阅读(3630)  评论(0)
在文章调试JavaScript/VB Script脚本程序(Wscript篇)里面,有网友问我如何调试ASP里面的脚本程序,我不知道他问得是调试ASP网页里面的VBScript ASP代码,还是ASP.NET网页里面的JavaScript/VBScript客户端代码,所以我就在这篇文章里面先将调试ASP网页里面的ASP代码这种情况都解释一下吧。估计ASP这个玩艺用的人已经很少了,但是还是有很多...
2009-09-14 13:43  阅读(2759)  评论(0)
JavaScript/VB Script脚本程序一般有两种执行方式,一种是嵌入在宿主程序里面执行,比如在IE浏览器里面执行;另外一种,在资源管理器里面双击执行(虽然还是通过另外一个程序解释执行,但是给人的感觉毕竟是直接运行)。这两种方式,都可以使用Visual Studio来进行调试,先看大家用得比较频繁的网页脚本程序的调试:1.       要调试网页里面的脚本程序,调试器需要宿主程...
2009-09-13 18:25  阅读(2983)  评论(0)
在日常的操作系统维护过程中,有时我们也会写一些小的脚本程序来简化系统管理工作,例如调用一些WMI函数来自动安装卸载程序之类的。在实际工作中,我发现程序员对脚本抱怨最多的就是脚本程序很难调试这个缺点,特别是调试.vbs等WSH程序的时候,总是:1.       在资源管理器里面双击一个.vbs文件。2.       程序里面发生了一个错误,例如异常,或者编程逻辑错误。3.      ...
2009-09-13 18:14  阅读(3031)  评论(0)
有的时候,你在双击一个托管程序,或者使用Assembly.Load方法加载一些Assembly的时候,CLR会抛出System.FileNotFoundException,这种异常经常让人误解。例如有一个托管程序A,引用了dll B,虽然A和B都在同一个文件夹里面,但是当你试图运行A的时候,还是会有类似下面的异常抛出来:Unhandled Exception: System.I...
2009-03-10 01:24  阅读(1638)  评论(0)
当然啦,很多人开始学习C#的时候,就已经听到过来自多方的警告,连接字符串的时候一定要用StringBuilder,不要使用String直接连接的方式,而且也都知道其中的原因,例如什么因为String是一个固定的变量,不能更改,每一次String连接的操作实际上都是创建了一个新的String实例。可能很少有人知道具体的数据是什么,因为我们不能尽信书本上说的,一定要有一些实验数据才可以。 让我...
2009-03-10 01:19  阅读(2387)  评论(2)
一个好的调试器,能够帮助程序员处理很多自动化的工作。试想下列的情形:1.         错误是发生在一个循环当中,只在循环遍历了若干次以后,才会出现。2.         错误只在程序中某个变量为一个特定的值,才会出现,而这个变量的值是在程序运行的过程中随机设置的。3.         多个线程都要调用同一个函数,而你只想在某几个线程执行这个函数的时候,中断程序的执行。在上面列出...
2009-02-18 18:43  阅读(7866)  评论(0)
Visual Studio提供了存储过程调试功能,你可以在Visual Studio里面直接调试存储过程里面的T-SQL语句,察看存储过程局部变量的值,以及设置断点等等。 这里是设置过程和操作步骤:1.         启动Visual Studio,并且点击菜单里面的“ 工具(Tools)”à “连接到数据库(Connect To Database)”。2.         在弹...
2009-02-14 17:11  阅读(1213)  评论(0)
在Windows中,Windows API CreateProcess提供了一个枚举值允许你的程序调试其他的程序,比如下面的代码就是创建一个调试器的最基本的步骤:1.         启动一个程序,并指定你希望调试这个程序—例如DEBUG_PROCESS2.         然后监听Windows给你的程序发送的各种调试消息,例如被调试程序正在加载一个新的DLL(不管是静态调用还是动态调用...
2009-02-10 00:41  阅读(1141)  评论(0)
在调试程序的时候,有的时候你会发现设置的断点不起作用,而且更糟糕的是,一般碰到这种情况的时候都是非常紧急或者是加班到夜已深、人寂静的时候了。正是应了那句玩笑话:“机器机器,越急越气!”。一般发生断点不起作用的话:1.         你首先要判断的是断点是否真的设置上了?a)         如果在Visual Studio里面,你的断点符号是一个实心圆,那么断点的确是设置上了,你要判断的...
2009-02-05 00:06  阅读(15391)  评论(7)
在使用Win32 API LoadImage加载大量图片,或者加载很大的图片的时候,你可能会碰到图片加载失败,而且调用GetLastError显示错误是“内存不足,无法完成此操作!”,打开任务管理器,却发现系统里面还有大量的内存空闲。比如使用下面的代码你就会碰到这个错误—当然你要准备大量的BMP图片:#include "StdAfx.h"#include "SampleBa...
2009-02-02 22:19  阅读(3764)  评论(0)
在现在C++、Java、.Net代码大行其道的时候,很多代码错误(Bug)都是通过异常的形式表现出来的。由于工期紧或者种种原因,很多程序员在碰到程序发生未处理的异常的第一反应就是try … catch (Exception e) { … }。然而代码开发到后期的时候,这种简单粗暴的解决代码错误(Bug)的方式就会在其他不相干的地方表现出来,有的时候甚至导致程序随机的不稳定,而且很难调试。比如执行下...
2009-02-02 22:15  阅读(11670)  评论(7)
忘记释放已经分配的内存是一种常见的编程错误,当然我指的是在C++编程当中,例如下面的代码里面就存在一个忘记释放内存的编程错误。我个人觉得忘记释放内存的编程错误是不可避免的,毕竟程序员都是人,困了,心情不好了,代码过于复杂啦等等都可能导致忘记加上一句delete XXX语句。// 未释放内存空间.cpp : Defines the entry point for the cons...
2009-02-02 22:12  阅读(2597)  评论(1)
上次在MSDN论坛上看见一个网友问ZeroMemory的用处,问题里面说他在内存上分配了一个变量,但是在使用它调用一个函数的时候,系统报告Access Violation异常,但是加上ZeroMemory以后,就运行正常了,因此他想知道ZeroMemory的用处。 // 使用未初始化变量.cpp : Defines the entry point for the con...
2009-01-31 20:15  阅读(4977)  评论(0)
原文地址:http://blogs.msdn.com/tess/archive/2005/12/20/505862.aspx 当你分析一个dump文件的时候,调试里面最艺术的地方就是知道哪些东西是可以忽略的,而哪些是你想要的东西。 特别是在你分析一个程序停止响应(hang)的bug时,了解这些常见线程对你非常有帮助,浏览线程各堆栈列表的时候,你可以知道不是这个线程出问题了,也不是那...
2009-01-30 10:41  阅读(2549)  评论(2)
假设你现在正在开发一个COM系统,该系统由两个独立程序组成,一个是COM的服务器(COM Server),这是一个独立的exe程序;另外一个是调用这个COM服务器相关服务的COM客户端(COM Client)。这种场景一般是你希望你的COM服务器可以提供一些自动化(Automation)功能,允许你的用户写一些vbs程序来为你的程序提供一些自动化脚本。 例如Office Excel自己本身是一个独...

整个分析过程如下: 1.         首先将VS 2008运行起来,打开一个工程,这里我打开的是PersonalFinancy工程,这个时候VS 2008自动将PersonalFinancy.vshost.exe运行起来。2.         启动可执行文件,PersonalFinancy.exe,因为这是一个窗体程序,所以我没有在工程里面设置断点。3.         接着启...
2009-01-22 00:16  阅读(6017)  评论(2)
在Visual Studio 2005以后,编译完.NET程序以后,你会发现在bin文件夹里面除了生成的可执行exe文件以外,VS还自动给你生成了一个.vshost.exe文件。MSDN里面对这个程序的描述是:下文引用自MSDN:§  提高的调试性能 宿主进程创建一个应用程序域并将调试器与应用程序关联起来。执行这些任务会导致在开始调试和开始运行应用程序之间有很明显的延迟。通过在后台...
2009-01-21 18:17  阅读(9160)  评论(4)
有的时候你会发现在Visual Studio 2005/2008里面找不到一些菜单项,其实你可以通过VS菜单的“工具(Tools)” – “自定义(Customize)”来添加一些不见了的菜单项。 比如你要在“调试(Debug)”里面添加“立即(Immediate)”菜单,以便显示“立即(Immediate)”窗口,你可以从“自定义(Customize)”对话框的“命令(Commands)...
2009-01-21 00:49  阅读(1427)  评论(0)
下面的信息是使用Windbg准备启动一个进程之前,Windbg输出的信息,下面我用红色字体来解释输出里面的重要信息。Windbg信息# Windbg的版本号,还有一个重要的信息是最后的x86字样,因为它告诉你他是一个32位# 的调试器,所以不能调试64位的程序。然而64位的Windbg可以调试32位和64位的用# 户模式下面的进程Microsof...
2009-01-21 00:46  阅读(3062)  评论(0)
  有的时候,你可能需要调试一段没有源代码的程序,或者说你有的时候想单步跟踪到.NET Framework里面的一些函数去看看为什么调用会失败。如果你这个需要的话,可以试一下Deblector,它将Reflector和mdbg.exe的威力结合起来为你提供次源代码级别的调试体验。 You may already have experiences with debugging an ...
2008-12-30 19:08  阅读(2795)  评论(0)
1.1.  调试模式调试器可以采用三种模式来调试被调试程序(在下文中,如果没有特别说明的话,简称程序):l  一种是直接调试模式,即直接从调试器里面启动程序,就如同我们在Visual Studio里面按下F5就可以调试程序那样。l  另外一种是附加(attach)模式,即你可以在程序已经启动的情况下,把你的调试器附加到程序上,进行调试。这种模式通常在调试服务(Service)程序非常有...
2008-12-05 18:12  阅读(4646)  评论(2)
  When you click a Clickone link and trying to install the application, an error dialog pops which looks like the following dialog: Figure 1 Exception Screen snapshotBecause dfsvc.exe is l...
2008-12-04 20:49  阅读(2078)  评论(0)
 £ 设置Windbg为默认的验尸调试器设置Windbg为非托管程序的默认的验尸调试器Windbg –I注意:I一定要大写设置Windbg为托管程序的默认的验尸调试器REG ADD HKLM/Software/Microsoft/.NetFramework /v DbgManagedDebugger /t REG_SZ /d "c:/Debuggers/windbg.exe...
2008-12-04 20:44  阅读(2810)  评论(0)
 可能有人会对这个问题有一些争议,因为大部分情况下我们只需要在调试器(Debugger)里面直接启动被调试程序(Debuggee)就可以在程序启动前调试程序了。但有些情况下,你是不能控制被调试程序(Debuggee)在什么时候启动的。例如在DCOM环境里面,DCOM客户端(Client)可以通过调用CoCreateInstanceEx(…, CTX_LOCAL_SERVER, …)启动...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值