精华内容
下载资源
问答
  • 什么我电脑上安装的vs2010和vs2013都不能进行代码的调试,每次调试就说我没有正确安装调试器,请问这要怎么解决为好呢??查了好多的资料都没有找到解决的办法
  • PHP代码调试

    千次阅读 2016-09-28 23:40:42
    PHP语言没有多线程、同步等概念,大多由...php代码调试的实现方式主要有两种: 通过PHP的调试函数实现 通过断点调试工具实现 1. PHP的调试函数 对于一般的PHP代码,使用几个常用的输出函数就可实现代码调试。常
    PHP语言没有多线程、同步等概念,大多由函数和类组成,数据类型和语法比较简单,利用其丰富的内置函数就可以实现大部分的调试功能。因此,PHP代码比较容易理解,也很容易调试。
    php代码调试的实现方式主要有两种:通过PHP的调试函数实现和通过断点调试工具实现。
    1. PHP的调试函数
    对于一般的PHP代码,使用几个常用的输出函数就可实现代码调试。常用的函数有echo、print、print_r、var_dump、var_export、die、exit等等。
    其中,echo 和 var_dump 最常用。
    如果要在输出变量的值后终止流程,可使用 die 或 exit 语句。die 和 exit 在功能上基本是等价的,都是语句结构,而不是函数。下面的写法都是正确的:
    exit;
    exit();
    exit(0);
    exit('程序中止!');
    2. 断点调试
    一般情况下,利用PHP的输出函数就能轻松调试大多数问题,但是有时,还需要更强大有效的调试手段,这就需要利用一些支持断点调试的工具。
    断点调试,也叫单步调试,是指程序开发中,为了找到程序的bug,通常采用的一种调试手段,一步一步自动跟踪程序执行的流程,根据变量的值,找到错误的原因。
    很多集成的开发工具(IDE),如Zend Studio、PhpStorm等,都支持断点调试,在需要调试的代码行设置断点,然后按预设的快捷键步进。
    当代码涉及到很多文件时,比如在MVC中,Controller层的代码可能会设计很多个文件,这些文件包括框架的核心配置初始化文件、类文件、路由控制文件等,如果用手工调试会比较累。另外,某些应用可能比较复杂,我们并不清楚流程是怎样的,也不知道究竟哪一步出了问题,该去哪里追踪变量。如果用手工方法一步一步地输出变量,调试的效率就会很低。在这些情况下,就轮到断点调试工具上场了。
    常用的调试工具有 zend debuger 和 xdebug,据说 zend debugger 不支持php5.3以上的版本,故这里我们只讲解 xdebug 调试器的使用。
    以Windows系统为例,到 xdebug 官网(http://xdebug.org/download.php)下载和PHP版本对应的xdebug扩展,要注意xdebug扩展所适用的PHP版本号、TS(线程安全)版还是NTS(非线程安全)版,以及VC6版本还是VC9版本,这些都应该和安装的PHP对应,否则可能出现问题。
    下载和PHP对应的xdebug扩展后,将php_xdebug.dll文件放到php的ext扩展目录下,编辑php.ini配置文件,增加下面的配置:
    [XDebug]
    ; 用中括号括起来的是模块名称,它会在你的phpinfo信息中作为分隔标题显示出来
    zend_extension = "E:\xampp\php\ext\php_xdebug.dll"
    ; 设置php_xdebug的DLL文件路径
    xdebug.auto_trace=On
    ; 将php对函数调用的监测信息用文件格式输出
    xdebug.collect_params=On
    ; 将php对函数调用的参数加入到函数过程调用的监测中
    xdebug.collect_return=On
    ; 将函数调用的返回值加入到函数过程调用的监测中
    xdebug.profiler_append = 0
    xdebug.profiler_enable = 1
    ; 这是效能监测的设置开关
    xdebug.profiler_enable_trigger = 0
    xdebug.profiler_output_dir = "E:\xampp\tmp"
    ;这是效能监测信息开启的情况下,写入到profiler_output_dir设置的路径中,会生成一个相应的文件
    xdebug.profiler_output_name = "cachegrind.out.%t-%s"
    xdebug.remote_enable = 1
    ; 开启远程调试
    xdebug.remote_handler = "dbgp"
    xdebug.remote_host = "127.0.0.1"
    ; 远程主机地址
    xdebug_remote_port=9000
    ; 主机的端口
    xdebug.trace_output_dir = "E:\xampp\tmp"
    ;设置的函数调用监测信息的输出路径
    其实,在xampp中的php已经包含了对应版本的xdebug扩展,只不过,在php.ini配置文件中,关于该扩展的配置项都加了注释,我们只需修改php.ini,将注释取消即可,也就是删除代码行行首的分号注释符,修改后的配置项如下:
    [XDebug]
    zend_extension = "E:\xampp\php\ext\php_xdebug.dll"
    xdebug.profiler_append = 0
    xdebug.profiler_enable = 1
    xdebug.profiler_enable_trigger = 0
    xdebug.profiler_output_dir = "E:\xampp\tmp"
    xdebug.profiler_output_name = "cachegrind.out.%t-%s"
    xdebug.remote_enable = 0
    xdebug.remote_handler = "dbgp"
    xdebug.remote_host = "127.0.0.1"
    xdebug.trace_output_dir = "E:\xampp\tmp"
    保存php.ini后,重启web服务器。打印phpinfo,在输出的信息页面,查找字符串xdebug,如果有如下信息,就说明php的xdebug扩展开启成功。

    xdebug安装成功后,我们还需要对集成开发工具(如Zend Studio)进行配置,使其默认使用 xdebug 调试器进行断点调试。
    关于如何在 Zend Studio 中配置和使用 xdebug 断点调试工具,可参考:http://blog.csdn.net/lamp_yang_3533/article/details/52661749

    展开全文
  • 集成开发环境,一般包括代码编辑器、编译器、调试器和图形用户界面工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。...

    写在前面

    对于这些概念,我只是记录一下自己的理解,如果有不对的地方请多多指正。

    IDE

    集成开发环境,一般包括代码编辑器、编译器、调试器和图形用户界面工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。就比如MDK Keil,它就属于用于ARM软件开发的集成开发环境。

    个人理解就是将代码从高级语言或者汇编语言变成能够被机器识别的二进制文件一整套的工具集合。

    编辑器

    文本编辑器(文字编辑器)是用作编写普通文字的应用软件,它与文档编辑器(文字处理器)不同之处在于它并非用作桌面排版(例如文档格式处理),它常用来编写程序的源代码。常用的代码编辑器有:Notepad++,EditPlus,vim,Sublime Text,WebStorm ,HBuilder,GNU Emacs,ATOM,Windows记事本等等…其中visual studio code是微软开发一款开源文本编辑器,比atom编辑器更好用。

    注:对于一门语言可以用任何一个文字编辑软件编辑,代码编辑软件多了很多功能,如对于特定语言语法高亮,本质上代码都是一个不同格式的纯文本(例如:C语言的.c,Java语言的.java)编译之后才能够成为目标程序(即相对低级的,机器可以直接识别的语言)

    个人理解就是你只能在编辑器上记录,最好的举例就是跟Windows下记事本一样。

    编译器

    把源代码转换成(翻译)低级语言的程序,一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)。

    个人理解,编译器负责将高级语言,如C、C++、Pascal/Object Pascal(Delphi)、Golang等等这些编译型语言转换成汇编语言,然后汇编器和链接器负责将汇编语言变为机器可识别的二进制文件。网上有些资料会说编译就是将高级语言或者汇编语言变成机器识别的二进制语言,个人理解这是因为一般的编译器都将汇编器链接器包含在内,所以会这样说。

    下面给出C程序编译的过程,帮助大家理解:
    在这里插入图片描述
    在这里插入图片描述
    简单总结:编译器编译完,高级语言变为汇编语言,.h文件和.c文件变为.a文件,即汇编文件。汇编器汇编完,生成.o文件,通过链接器用链接库做链接,最终变成a.out文件(Linux中)和a.exe文件(Windows中)。即变成电脑能够识别的二进制文件。

    解释器

    直接把高级编程语言一行一行转译运行,重点是不会一次把整个程序转译出来,因此运行速度比较缓慢,它每转译一行程序就立刻运行,然后再转译下一行,再运行,如此不停地进行下去。

    个人理解,解释器是帮助解释型语言一行一行的翻译成机器语言,程序是不需要编译的,程序在运行时才翻译成机器语言。比如Java、Perl、Python、basic、C#、PHP、Ruby、MATLAB等等。脚本语言也是解释型语言,比如VBScript、JavaScript、installshield script、ActionScript等等,脚本语言不需要编译,可以直接用,由解释器来负责解释。

    调试器

    DeBugger(调试器)是自从计算机诞生伊始就始终伴随着程序员的一个挚友,起初的调试器都是基于硬件直接实现的。

    这个很好理解,就是控制软件运行、查看软件运行中信息、修改软件执行流程等作用,通俗的讲调试器是用来在程序运行以后,根据运行状况来检查错误。

    编译器和解释器的区别和优缺点

    区别:解释器是解释执行的源代码,编译器是将源代码编译成目标代码。他们最大的区别是程序运行时需要解释器边解释边执行,而编译器则在运行时是完全不需要的。

    解释器优缺点:优点是比较容易让用户实现自己跨平台的代码,比如Java,php等,同一套代码可以在几乎所有的操作系统上执行,而无需根据操作系统做修改。缺点是由于程序不需要编译,程序在运行时才翻译成机器语言,每执行 一次都要翻译一次,造成执行效率比较低。这也是为什么python编译的时候很慢,C程序编译起来很快的原因。

    编译器优缺点:程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差。编译器的目的就是生成目标代码再由连接器生成可执行的机器码,这样的话需要根据不同的操作系统编制代码,虽然有像Qt这样的源代码级跨平台的编程工具库,但在不同的平台上仍然需要重新编译连接成可执行文件,但其执行效率要远远高于解释运行的程序。

    编译器和调试器的区别

    编译是编译器在你程序没有运行的时候帮你检查错误。调试是你用调试器在程序运行以后,根据运行状况来检查错误。编译器是把你代码汇编成二进制文件,可以执行的程序。调试器是对已经存在的二进制文件进行调试的软件,目的在于查找性能的瓶颈和跟踪软件的bug。

    展开全文
  • IDEA - 2020.1 版本针对调试器代码分析器的改进,值得期待1、对于调试器的加强:数据流分析辅助2、调试加强:属性置顶功能3、调试加强:IPV6 调试4、性能分析的改进,剔除额外的东西5、支持读取内存快照文件6、...


    1、对于调试器的加强:数据流分析辅助

    IntelliJIDEA v2020.1向调试器添加数据流分析辅助,它根据程序执行的当前状态预测和显示可能的异常,并始终为真/始终为假条件。

    调试Java代码并到达断点时,IDE将根据程序的当前状态运行数据流分析,并在代码执行达到此点之前向您展示下一步将发生什么

    简单点说,就是在调试那些复杂的代码时,IDE可以预先显示不变的那些调试值,让你能够更好的调试代码,如图
    在这里插入图片描述

    2、调试加强:属性置顶功能

    这个改进不大,但是调试的时候很有用,就是说,你在调试的时候呢,有些对象的字段太多了,要去找他有时候还要翻页或者下拉很多,一般我们调试可能要走好多遍代码,你现在在第一次调试后,吧这个调试的字段置顶,以免老是要去找。

    在这里插入图片描述

    3、调试加强:IPV6 调试

    现在IDEA 支持通过远程计算机 IPV6 进入到调试会话

    4、性能分析的改进,剔除额外的东西

    使用CPU 调试器进行性能分析的时候呢,可以通过隐藏一些方法啊什么的,或者只关注某个调用节点下的方法,来提供更高关注度的分析

    提供了四个选项
    1、只关注子集调用
    2、只关注本调用
    3、屏蔽子集调用
    4、屏蔽本调用
    在这里插入图片描述

    另外,IDEA 允许你绕过递归,让你能够进行更专注的性能分析

    在这里插入图片描述

    5、支持读取内存快照文件

    IDEA 现在支持打开 hprof 文件,也就是内存快照文件,并且打开内存快照文件不会占用你太多的内存,如果你要打开这种文件,你需要如图所示

    在这里插入图片描述
    打开后呢,是这样的

    在这里插入图片描述

    就是暂时呢,只能进行简单的分析,后续的功能还在开发当中

    6、IDEA 变更了代码提交的界面

    他大概是这个样子的

    在这里插入图片描述

    7、LightEdit 用来作为简单的文本编辑器

    看着是个好功能,但是感觉还是有点鸡肋吧,因为他要通过命令行模式打开,并且有一定的功能阉割,然后就是打开快一点。

    在这里插入图片描述

    8、可以预览变更意图了

    意思就是呢,我们通过快捷键可以打开一些IDEA 提供的建议,比如这里有个警告,IDEA 会提供一些建议的解决方案或者让你修改设置,现在呢,如果是需要更改代码,在改之前,IDEA 可以让你预览一下改完了是个啥样子,不需要先改完,然后再取消了。

    如果你不改快捷键呢,就是alt +空格了

    9、禅定模式

    用来消除分心的,解决之前的全屏模式的一些不足,让现在更好用了。

    展开全文
  • windows简单调试器源码2700行左右代码

    千次阅读 2015-01-11 18:40:17
    简单调试器项目中on开头的函数为接收系统的调试事件并做相应的处理,简单调试器实现过程中主要的调试事件为异常事件,相应的处理函数为DispatchException。 在异常事件中访问异常、int3异常、单步异常是跟实现调试器...

    简单调试器项目中on开头的函数为接收系统的调试事件并做相应的处理,简单调试器实现过程中主要的调试事件为异常事件,相应的处理函数为DispatchException。

    在异常事件中访问异常、int3异常、单步异常是跟实现调试器功能密切相关的异常事件,这里用三个函数分别处理三个函数分别为OnExceptionAccess、OnExceptionBreakPoint、OnExceptionSingleStep。

    异常处理函数中如果为调试器自己设置的异常程序就会停下来接收用户输入等待下一步处理,相应的用户交互函数为UserInput。

    在于用户交互的过程中程序是通过一些列以Cmd开头的命令函数完成相应的功能。


    断点相关:


    int3断点相关:

    int3断点分为临时断点和永久断点,设置断点时如果永久断点与临时断点重复需要把已经存在的临时断点转换为永久断点,其他断点重复的情况不需再次设置断点

    临时断点使被调试程序中断以后,需要恢复被调试程序断点为原值,并把该临时断点删除。

    永久断点使被调试程序中断以后,需要暂时恢复被调试程序断点为原值,然后配合单步执行过该永久断点,在单步异常中再次设置该永久断点。

    删除断点把被调试程序断点恢复为原值,然后删除该断点

     

    内存断点相关:

    内存断点分为写入断点和访问断点,通过修改被调试程序内存属性为不可访问,然后在访问异常事件中处理内存断点。

    设置内存断点,本程序限制内存断点长度不能超过一个分页,本程序会检测设置的内存断点是否跨内存分页,如果跨内存分页则自动把该断点拆分为两个不跨分页的内存断点。

    因为内存访问属性包含内存写入属性,所以在设置内存断点时如果和之前已经存在的内存断点有重叠区域该程序提示用户设置断点失败。

    本程序用map记录修改的内存分页起始地址以及对应的内存分页原属性。

    设置新内存断点时查找map中该内存分页是否已经存在其他内存断点,如果存在只需添加该内存断点带内存断点表,如果不存在则修改该内存分页属性并存入map,然后添加该内存断点进入内存断点表

    被调试程序发生访问异常时首先查询是否命中map中的内存分页,没有命中说明是程序自身的异常不做处理,如果命中map中的内存分页,首先暂时恢复该内存分页为原来的属性,然后继续查找内存断点表看是否命中具体的内存断点,如果命中具体的内存断点表,提示用户,没有命中具体的内存断点,调试程序单步走过该访问异常,然后在单步事件中恢复内存分页属性。

    删除内存断点:

    首先删除该条内存断点,然后查找内存断点表,查找是否存在与删除内存断点在同一内存分页上的其他内存断点,如果内存断点中不存在与删除内存断点在同一分页的断点,查找map中对应的内存分页,恢复该内存分页属性为原值,删除掉map中该内存分页记录,如果还存与删除内存断点在同一分页的内存断点,则不对map做处理。

     

    硬件断点相关:

    设置硬件断点,在单步异常中判断是否为硬件断点异常,如果命中硬件断点提示用户,命中硬件断点的情况下设置单步,在单步异常中恢复硬件断点。


    附件中好像没有显示源码源码可以在这里下载:

    http://download.csdn.net/detail/qihuanfengyun/8351005


    展开全文
  • HBuilder代码调试

    万次阅读 2016-07-13 16:38:09
    HBuilder对前端代码调试方式有边改边看、真机运行、webkit remote debug真机调试3种。 系列文章目录导航: - [调试方式介绍一 边改边看] - 调试方式介绍二 真机运行 - 调试方式介绍三 webkit remote debug之...
  • pdb—Python调试器

    万次阅读 2020-06-08 09:04:19
    该模块pdb为Python程序定义了一个交互式源代码调试器。它支持在源代码行级别设置(条件)断点和单步执行,检查堆栈框架,源代码列表以及在任何堆栈框架的上下文中评估任意Python代码。它还支持事后调试,可以在程序...
  • python代码调试

    千次阅读 2014-09-07 23:09:20
    如果你没有发现什么明显的错误,那么你可以进一步地启动Python调试器。例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 >>>  import pdb >>> pdb....
  • Android Studio代码调试大全

    万次阅读 多人点赞 2016-06-02 02:21:20
    Android Studio目前已经成为开发Android的...正所谓,工欲善其事必先利其,和其他开发工具一样,如Eclipse、Idea,Android Studio也为我们提供了强大的调试技巧,今天我们就来看看Android Studio中有关调试的技巧。
  • Python代码调试

    千次阅读 2018-11-01 14:15:28
    有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复bug。 第一种方法简单直接粗暴有效,就是用print()把...
  • Python 代码调试技巧

    千次阅读 2019-09-13 15:46:23
    pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令,详情...
  • 谷歌浏览器调试JavaScript代码

    千次阅读 2018-08-07 10:39:15
    谷歌浏览器调试JavaScript代码 由于在前端是一个弱类型语言,虽然现在增加了ESLint,Flow等静态检查,但是这些检查工具只能帮你检查出一些代码的显式问题,很多隐藏的逻辑性问题我们只能通过console去输出,但是...
  • 前端代码调试:Webstorm调试js

    万次阅读 2016-11-30 11:57:39
    目前前端开发JavaScript的debug一般都是用chrome和firefox的开发者工具进行调试,浏览器工具使用不方便,webstorm支持了在代码上打断点,在编辑里debug js代码。类似Java后台 Eclipse debug效果。接下来就给大家...
  • Pycharm调试器综述

    千次阅读 2017-12-17 13:52:48
    说白了,调试器比print的好处在于,调试器可以用丰富的姿势来跟踪代码,暗中观察,且不污染代码
  • github文章地址:... ... 针对前端代码调试,我们更多的是对javascript代码调试,我们常用的可能就是向alert、console等方式,同样的对于DOM元素变化的js脚本也可以进行监听调试,然后就是简单的HTML元...
  • 什么需要Debugger?很多PHP程序员调试使用echo、print_r()、var_dump()、printf()等,其实对于有较丰富开发经验的程序员来说这些也...那么我们为什么还需要一个专门的调试程序来监控我们的程序运行呢? 这个问题的答案
  • 【UI编辑】修复csb包含.ttc字体,发布csd无法打开问题 【代码编辑】修复替换全部时,某些情况下无法替换已打开文档问题 【Lua调试】修复Lua调试时可能去除文件utf-8的BOM问题 【代码编辑】去除替换全部时,替换文本...
  • 一般调试器工作原理

    千次阅读 2016-06-11 12:59:20
    调试器简介 严格的讲,调试器是帮助程序员跟踪,分隔和从软件中移除bug的工具。它帮助程序员更进一步理解程序。一开始,主要是开发人员使用它,后来测试人员,维护人员也开始使用它。 调试器的发展历程: ...
  • Node之使用调试器

    千次阅读 2019-12-24 17:39:45
    启动调试器 node debug<需要被执行的脚本文件名> 继续执行剩余代码 cont或者c 执行下一步 next或者n 进入函数内部 step或者s 执行函数内部剩余所有代码 在函数内部代码被逐句执行的时候,可以使用“out”...
  • 环境:node 10、 谷歌浏览参照:https://segmentfault.com/a/1190000012155919第一步:安装inspectornpm install -g node-inspector如果遇到错误:改用下面的命令:npm install -g node-inspector@0.7.5第二步:...
  • Android Studio Java代码调试及NDK调试

    千次阅读 2018-01-24 14:11:13
    Android Studio Java代码调试 debug模式断点调试 写一个简单的调试程序,我们先来一个for循环; 设置断点(点击红点位置添加或取消断点) 点击debug模式运行 查看调试面板 简单调试 ...
  • 从别人的电脑上拷贝了一个项目到我的电脑上,出现以下错误,好不容易找到解决方法,特此记录。解决方法:找到exe的生成项目,单击右键,选择属性,进入下面的界面:在生成选项卡中将目标平台选择x86,及解决此问题。...
  • WinDbg调试器

    千次阅读 2012-06-03 22:53:28
    WinDbg调试器 转自:http://www.cnblogs.com/dubingsky/archive/2009/07/21/1527843.html   你可以从微软网站上下载到的调试器: · KD-内核调试器。你可以用它来调试蓝屏一类的系统问题。如果是开发...
  • Webstorm 调试 JavaScript 代码

    千次阅读 2019-02-18 14:35:00
    通常前端项目的 JavaScript 代码调试是通过浏览器的开发者工具(右键菜单中点击 “检查”)来完成。这种调试的方式的舒适度很差,显示页面的区域占了很大一块空间,留给调试窗口的空间很小。另外,浏览器开发者工具...
  • 调试caffe代码

    千次阅读 2016-11-30 15:39:08
    参考: http://blog.csdn.NET/xiaoyezi_1834/article/details/50724875 ...自己苦于需要修改caffe代码调试代码,找寻方法找了很久 -> 总结如下:qt creator/anjuta/gdb 如下都是博主亲身试验成功的
  • Linux gdb调试器用法全面解析

    万次阅读 多人点赞 2012-03-22 22:18:58
    GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能: 启动程序,可以按照工程师自定义的要求随心所欲的运行程序。 让被调试的程序在工程师指定的断点处停住,断点...
  • 调试器的工作原理

    千次阅读 2014-01-26 16:39:02
    调试器的工作原理《黑客调试技术揭秘》   理解调试器的工作原理  对调试器的工作原理毫无所知就贸然地使用它是很愚蠢的。所以,在本节中,我将介绍调试器工作的基本原理和理论基础。这可...
  • Python调试器-Pdb的简介及调试命令

    千次阅读 2020-12-04 16:33:35
    pdb为Python程序定义了一个交互式源代码调试器。它支持在源代码行级别设置(条件)断点和单步执行,检查堆栈框架,源代码列表以及在任何堆栈框架的上下文中评估任意Python代码。它还支持事后调试,可以在程序控制...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 554,390
精华内容 221,756
关键字:

代码调试器是什么