paip.论程序断点的类型以及设置总结

作者Attilax ,  EMAIL:1466519819@qq.com 
来源:attilax的专栏
地址:http://blog.csdn.net/attilax

1.寻常断点
-------------

第二 API断点

第三 内存断点(跟踪关键数据的断点) 
其中有二个选择 
〔内存访问〕和〔内存写入〕。

第四 硬件断点(跟踪关键标志的断点)  
有三个方式〔硬件访问〕、〔硬件写入〕、〔硬件执行〕。一般用前2个

5.条件断点[Conditional breakpoint]   是一个带有条件表达式的普通断点。当调试器遇到这类断点时,它将计算表达式的值..根据结果来的决定停止或者继续..

6.记录到达断点次数
-----------------------

有时你希望,只有当第N次满足条件的运行到达断点时,才中断程序运行。例如:当第五次返回少于10份晚餐的查询结果时,中断程序运行。
可以通过右击断点,然后在弹出菜单上选择“Hit count…”菜单命令实现。以VS2010为例子..

7.跟踪点(TrackPoints)”这个调试功能
-----------------------------------
。“跟踪点“是种特殊的断点,当它被命中时,它会触发一系列自定义操作。如果你想观察程序的行为,而又不想中断调试的时候,这个功能尤其有用。
你可以在特定的行上,按F9加跟踪点。然后
右击断点,在上下文菜单中选择“When Hit…”:
在上面例子中,我们设定一旦命中断点时就打印追踪信息。注意,我们已经把局部变量“x”的值,作为追踪信息的一部分输出。局部变量可以通过{变量名}语法输出。你还可以利用系统内置的命令($CALLER, $CALLSTACK, $FUNCTION等等),在追踪信息中输出常用的调试值。
在上例中,我们同时选中了底端的“continue execution“选项,这说明我们不希望程序中断调试状态,而是继续运行。唯一的不同是:每次断点条件满足时,我们的自定义追踪信息都将被输出。

现在当我们运行程序时,会发现自定义追踪信息自动显示在Visual Studio的“输出“窗口里。这让我们很容易看到程序的递归调用过程:

8.跟踪点—运行自定义的宏  .当命中跟踪点时,能否自动输出所有的局部变量?
--------------------------------------------------------------------

Visual Studio中并没有这样的内置功能,但我们可以写一个自定义宏来实现,然后在命中跟踪点时调用该宏。这个的实现需要先打开Visual Studio的宏编辑器(工具->宏->宏IDE菜单命令),然后在项目资源管理器的MyMacros节点下选择一个模块或创建新模块(如:加个名为“UsefulThings”的模块),再把下面的VB宏代码贴到模块中并保存。
Sub DumpLocals()
Dim outputWindow As EnvDTE.OutputWindow
outputWindow = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput).Object

Dim currentStackFrame As EnvDTE.StackFrame
currentStackFrame = DTE.Debugger.CurrentStackFrame

outputWindow.ActivePane.OutputString(“*Dumping Local Variables*” + vbCrLf)
For Each exp As EnvDTE.Expression In currentStackFrame.Locals
outputWindow.ActivePane.OutputString(exp.Name + ” = ” + exp.Value.ToString() + vbCrLf)
Next
End Sub
上述宏代码将循环当前的堆栈,把所有的局部变量输出到“输出”窗口。

使用自定义的“DumpLocals”宏

然后,我们可以在如下的一个简单程序中使用刚定制的“DumpLocals”宏了:

上述代码中,我们用F9在“Add”方法的返回值处加了个断点,然后右击断点,在弹出菜单上选择“When hit”。

将显示如下对话框。和之前不一样, 我们不选“Print a message”选项,也不手工设定需要输出的变量;而是选择“Run a marco”复选框,并指定到我们上面创建的UsefulThings.DumpLocals宏上:

为了使程序能在命中跟踪点后仍继续运行,我们将继续选中“continue execution”复选框。

9.DOM断点
------------
10.XHR断点
---------------
调试ajax 时候用处...

11.event listener breakpoint 
-------------------------------
这个断点类型太用处兰..包括.TIMER..LOAD,  DOM,,  CONTROL十分的有益的..

12.IntelliTrace(智能跟踪)...历史调试”功能,
-------------------------------------------------
你在动态调试的时候可以使用这个历史性的调试工具。
它通过对预先设置的事件和方法在运行过程中的跟踪并将其有效地传递给调试执行者,从而快速的传递程序在执行过程中的状态和各种信息来帮助开发者更好的调试程序,快速的发现问题。实际上,在Visual Studio 2010之前,Microsoft Visual Stuido已经帮助我们很好的继承了调试工具,比如对变量的监控,对堆栈的查看等等,并且允许设置断点进行单步调试等。所有的这些都在很好的帮助开发者来了解程序在不同的执行过程中的状态以及检测是否按照预先实际的逻辑进行运转,而且更多的,我们通过断点后监测程序状态来发现问题所在。而这样所存在的问题是,一些逻辑上的错误可能发生在断点执行之前,而且很可能是一些无法追查。开发者必须停止当前的调试,重新设置断点并启动调试,而这样的试验过程往往需要很多次才能找到正确的位置来设置断点。IntelliTrace智能的将一些调试信息和程序状态自动的跟踪并实施的展现给开发人员,从而减少了需要程序员找到适当的断点才能跟踪和监控程序运行状态的过程。

使用IntelliTrace捕捉到调试进程的其他人可以把记录以及.dlls和pdbs文件发送给你,你可以重放它们的进程。这个进程也许进入到数据库(你没有这个数据库),它也许是采用你不能复制的方法设置的,它可能在你不能企及的网络上,但是,你不用担心,因为你拥有记录以及.dlls和pdbs文件,你可以重放。

它对于多线程的情况也是非常好的,当你经过这个应用程序的时候,这个软件瑕疵就消失了,但是,在正常速度运行时,这个软件瑕疵又出现了。

13.手动单步式调试
-------------------
一般是print,在return..

14.手动log式调试
------------------

参考:
VS2010- IntelliTrace(智能跟踪) - 网络编程 - 蓝色理想.htm
VS2010断点设置技巧 - jcx5083761的专栏 - 博客频道 - CSDN.NET.htm
Ollydbg破解如何下断点、断点有什么特点

paip.论程序断点的类型以及设置总结相关推荐

  1. 断点-断点设置-断点作用-断点的类型

    https://blog.csdn.net/maritimesun/article/details/7815903 https://www.w3cschool.cn/intellij_idea_doc ...

  2. eclipsevue代码怎么运行_打了多年的单片机调试断点到底应该怎么设置? | 颠覆认知...

    导读:程序运行过程中,有些数据被莫名修改了,在哪里修改的?又是怎么修改的?这个代码我只想知道是否运行过,或者运行了多少次,但是不想让程序停下来,或者仅打印调试信息,怎么办?当这个变量设置成某个数据后, ...

  3. 什么是断点,为什么要设置断点?断点的作用是什么?

    问题阐述 在程序调试时,为什么要设置断点,设置断点有什么好处? 专家解答 断点是调试器设置源程序在执行过程中自动进入中断模式的一个标记.当程序运行到断点时,程序中断执行,进入调试状态. 在 Visua ...

  4. IIS服务器上增加mp4格式MIME 类型映射设置具体步骤

    2019独角兽企业重金招聘Python工程师标准>>> 也许你会在纳闷,为什么我上传了flv或MP4文件到服务器,可输入正确地址通过http协议来访问总是出现"无法找到该页 ...

  5. 关闭惠普计算机通电启动注册表,惠普10代cpu电脑装win7卡logo(安装程序正在更新注册表设置)解决方法...

    最近有很多网友问我惠普电脑10代cpu台式机安装win7卡在在更新注册表设置怎么办?出现这种情况一般情况是由于没有提前注入显卡驱动,现在很多新电脑都采用的集成显卡,10代以cpu采用的集显的话,在ue ...

  6. vbs 窗体文字获取文档_MDI类型窗体设置背景图片

    MDI类型窗体设置背景图片 [实例介绍]本实例实现为多文档窗体设置背景图片的功能.运行程序,可以看到 MDI窗体显示的背景图片,可以打开子窗体.结果如 图1.33所示. [开发过程] (1) 创建一个 ...

  7. 人脸识别客户端应用程序_如何在应用程序中使用功能识别设置人脸检测

    人脸识别客户端应用程序 by Rohit Ramname 由Rohit Ramname 如何在应用程序中使用功能识别设置人脸检测 (How you can set up face detection ...

  8. 计算机启动bios设置程序,电脑怎样进入BIOS设置

    在电脑开机自检时,如果你仔细看的话,屏幕上出项的英文句子,这里学习啦小编整理关于怎么进入BIOS,仅供参考 比如: 台式机Award BIOS:按"Del"键; 台式机AMI BI ...

  9. PAIP WEB程序网站安全扫描检测工具(桌面程序)总结

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! PAIP ...

  10. win设置计算机网络,Win10怎么修改网络类型,Win10网络类型怎么设置?

    Win10怎么修改网络类型,Win10网络类型怎么设置?对某件事物越是了解的深入,越是能发现产品的猫腻!比如Win10!因为产品性能没升级多少,但是马甲换的却非常勤快!可能有些朋友会感觉,下面的内容似 ...

最新文章

  1. 八数码(康拓展开标记)及类似题
  2. 乒乓球单循环赛_重庆市首届乒乓球业余锦标赛开拍 冠军奖3万 总奖金近10万
  3. 【LeetCode】剑指 Offer 19. 正则表达式匹配
  4. WPF TreeView IsExpanded 绑定不上的问题
  5. STL之list介绍
  6. linux/windows eclipse远程调试 c/c++程序
  7. Python之random.seed()用法
  8. Firefly III 搭建个人财务记账平台
  9. 材料成型是现代制造业的重要支柱,对经济社会的发展和综合国力的提升有着十分重要的意义。
  10. 计算机语言echo off什么意思,批处理文件的@echo off是什么意思?
  11. VS2017配置PCL1.9(win10环境)
  12. 网页录屏将视频截图保存成gif图片并压缩的方法超详细
  13. Word 2016怎么安装公式编辑器
  14. app电池续航上下--Android自动化测试学历历程
  15. Android Fragment嵌套ViewPager,ViewPager嵌套多个Fragment
  16. 笑破肚皮!考驾照现场的爆笑故事!
  17. 用php写水仙花及思路,php水仙花数
  18. Python和Go语言的区别
  19. 【爬虫】学习:App数据的爬取
  20. android 英文语言设置字体,修改安卓ROM默认语言方法

热门文章

  1. 使用VSCode玩转Java (二)
  2. swift——富文本文字的简单使用
  3. JAVA的引用类型变量(C/C++中叫指针)
  4. [置顶] NYOJ117 求逆序数
  5. Mybatis-学习笔记(4)1对1、1对多、多对多
  6. js中0.1+0.2 与0.3的对比
  7. day-1 用python编写一个简易的FTP服务器
  8. 数据库——MySQL
  9. 初学Web 前端感受
  10. unity2d 5.0游戏练习制作记录——2d 飞行射击游戏(一)