精华内容
下载资源
问答
  • 我们在一些调试的情景下,我们可能会出现这种情况:我们在程序中设置了断点 A、B、C、D,然后我们在一次调试中不想让断点 B、C 生效,但是在下一次调试中我们可能又需要使用断点 B、C,这回我们应该怎么办呢?...

    我们在一些调试的情景下,我们可能会出现这种情况:我们在程序中设置了断点 A、B、C、D,然后我们在一次调试中不想让断点 B、C 生效,但是在下一次调试中我们可能又需要使用断点 B、C,这回我们应该怎么办呢?

    有同学会说了:我们不需要断点 B、C 的时候把断点 B、C 删除掉,需要的时候再设置一下就行了。这确实是个不错的想法,但是如果我们的工程很大呢?断点又分布在不同的地方,那我们该怎么办呢?

    因为 Visual Studio 本身就是为大工程而生的,所以我们完全不用担心工程大的问题,其实在很多调试器中都包含了类似断点禁用的功能,Visual Studio 的 Remote Debugger 也不例外,我们可以通过暂时禁用断点来达到上述目的。

    我们接下来通过下面这段代码来显示我们工作收入的正确打开方式,首先我们在第7行设置一个断点,然后按 F5 启动调试器。等待断点第一次被触发。

    #include

    #include

    int main(){

    for ( int i=1; i <= 500; i++ )

    {

    printf("现在我有%d万元资产\n", 6666 * i);

    //TODO:在这里插入断点

    _sleep(500 - i);

    }

    }

    537225776d3b9bf27c7dd116077bdf02.png

    断点第一次被触发的时候,我们注意这个地方,我们使用鼠标右键单击它,并在弹出的菜单中选择禁用断点(D),这时断点行的图标也变成了

    b54fa9ce27acf406ddcbacb8ba5ceebd.png,这就说明我们的断点被成功地禁用了。

    接下来我们按 F5 继续被调试程序的运行,开启疯狂收入模式,资产增加的速度会越来越快哦。为了预防财富所带来的危险(土豪略过),我们需要将程序暂停,这时我们使用鼠标右键单击我们的断点图标,在弹出的菜单中选择 启用断点(L),这时我们的断点图标又变成了

    bd09ff73b162a8b5ba00b2674dc48b21.png,这就说明我们的断点被成功地启用了。我们按 Shift + F5 终止调试。同样的,在编辑代码模式下我们也可以启用或禁用断点。断点的启用和禁用极大程度的方便了我们的调试操作。

    在一些调试情境下,我们可能会碰到这样的情况,我们想让程序在运行到某个地方的时候输出一定的调试信息,比如当前正在执行的函数什么的。这时我们可以设置断点,查看堆栈,再按 F5 继续运行。但是这样是很麻烦的,我们需要不停地按 F5 ,不过不用担心,这里我们有更好的解决方案——使用跟踪点。

    下面我们来了解一下跟踪点,什么是跟踪点呢?顾名思义,他是用来跟踪程序的。跟踪点和断点差不多,也是靠触发起作用的,唯一不同的是,它可以选择是否像调试窗口输出跟踪消息,并且可以选择是否暂停程序。所以我们可以把跟踪点当成是一类特殊断点。

    我们来试试在 Visual Studio 编辑器中插入跟踪点,与插入断点一样,我们把插入光标移到想要插入跟踪点的位置,然后点击鼠标右键,在弹出的菜单中点击 断点(B) -> 插入跟踪点(T) ,我们可以看到这么个对话框:

    44809c15d4e6d0f21794ff2c8b7da2ee.png

    我们看到,上面有很多提示信息,我们只要根据提示信息操作即可。比如在循环中我们常用到的打印消息:

    函数:$FUNCTION , 变量值 i 的值为 {i}

    接下来我们使用跟踪点来跟踪冒泡排序算法的数据交换过程。我们在 Visual Studio 中新建一个工程,输入如下代码:

    #include

    void genBubbleSort(int prevArray[] , int arrayLength){

    int p , n , tempValue;

    for (n = 0 ; n < arrayLength - 1 ; n++){

    for (p = 0; p < arrayLength - 1 - n; p++){

    if (prevArray[p] > prevArray[p + 1])

    {

    //数据交换

    tempValue = prevArray[p];

    prevArray[p] = prevArray[p + 1];

    prevArray[p + 1] = tempValue;

    //TODO:插入断点

    }

    }

    }

    }

    int main(){

    int myArray[10] = { 127 , 325 , 1235 , 7768 , 844 , 651 , 5424 , 102 , 318 , 907 };

    int arraySize = 10;

    printf("!原始数组:\n");

    for (int i = 0 ; i < arraySize ; i++){

    printf(" -> 第%d项 : %d " , i + 1 , myArray[i]);

    printf("\n");

    }

    genBubbleSort(myArray , arraySize);

    printf("!冒泡排序后的数组:\n");

    for (int i = 0 ; i < arraySize ; i++){

    printf(" -> 第%d项 : %d ", i + 1 , myArray[i]);

    printf("\n");

    }

    getchar();

    }

    上面这就是一个典型的冒泡排序算法的实现了。现在我们在第8行插入跟踪点,我们打印如下信息(花括号里的是我们想要查看的变量的值)。

    函数:$FUNCTION 数组第{p}项:{prevArray[p]}> 数组第{p+1}项{prevArray[p+1]} 进行交换

    我们通过调试器调试这个程序可以看到冒泡排序的过程,现在我们按 F5 启动调试器开始运行,这时我们查看输出窗口:

    794453a0d9c3c4b13e7304fd96c38ec5.png

    这里是不是输出了跟踪信息呢,没错,跟踪点的使用就是这么简单,大家可以尝试使用跟踪点显示我们的 tempValue 变量的变化情况,体验跟踪点使用的酸爽!

    展开全文
  • VsCode 中的断点调试

    2021-04-20 21:40:08
    VsCode 中的断点调试 【前提条件】 MacOS 和 node环境下 1.点击vscode左侧的debug按钮; 2.出现调试的菜单栏之后点击运行和调试下拉菜单 3.选中相应的工作区之后添加配置 4.出现相应的json配置文件,点击右下方...

    VsCode 中的断点调试

    【前提条件】 MacOS 和 node环境下

    1.点击vscode左侧的debug按钮;
    2.出现调试的菜单栏之后点击运行和调试下拉菜单
    3.选中相应的工作区之后添加配置
    4.出现相应的json配置文件,点击右下方的添加配置按钮
    5.选择相应的调试环境(一般nuxt层的调试选择 Nodejs:Attach)

    {
      // 使用 IntelliSense 了解相关属性。 
      // 悬停以查看现有属性的描述。
      // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
      "version": "0.2.0",
      "configurations": [
        {
          "name": "Attach",
          "port": 9229,
          "request": "attach",
          "skipFiles": [
            "<node_internals>/**"
          ],
          "type": "pwa-node"
        }
    
      
      
      ]
    }
    

    6.保存好之后,在终端中启动相应的项目
    7.在代码左侧的数字栏目里边点击,出现小红点则已经标注断点
    8.重新运行项目,即可实现断点的调试\

    【备注】
    1.如果node层的代码发生了变化的话,就要重新启动相应的项目
    2.不仅如此也要重新添操作一遍vscode断点调试操作[步骤2—步骤5],添加新的配置文件
    3.启动项目的时候需要加入 --inspect ,否则无法开启断点调试

    sudo node --inspect www
    
    展开全文
  • 一、请求前断点在工具中的位置 如图所示 请求前断点可以用来做什么 当前端输入框有字数限制时候,前端界面无法输入超出字数范围后的内容去验证服务器的处理逻辑的时候我们会经常用到请求前断点。 具体操作 a.切换...

    一、请求前断点

    1. Before Requests在工具中的位置,如图所示
      工具请求前断点设置步骤
    2. 请求前断点可以用来做什么
      当前端输入框有字数限制时候,导致前端界面无法输入超出字数范围后的内容去验证服务器的处理逻辑,这时候我们会经常用到请求前断点在fiddler里去篡改数据。
    3. 具体操作
      a.切换到要验证功能的网页请求(URL)中。
      b.在fiddler工具中设置好断点,并开启capturing捕捉请求。
      c.回到前端界面刷新网页请求,此时位于桌面任务栏的fiddler会发亮。fiddler发亮
      d.选中fiddler中需要操作的请求,由于项目不便演示,此处没有参数
      请求的参数设置
      e、修改完后看响应码是否正确
      相关信息的呈现
      f、此时也可以回到网页端的界面,看是否有超过字数限制的友好提示

    二、响应后断点

    1.After Responses在工具中的位置
    在这里插入图片描述

    2.响应后断点可以用来做什么
    响应后断点主要是为了制造伪响应,然后检验该响应内容在前端界面的展示情况。此处做伪响应的解释是因为:该响应内容是从服务器发出还未来得及被前端获取却被fiddler工具截获并篡改了,然后用篡改的意向内容去验证对前端界面的影响(比如超多字数或超少字数对前端界面的影响),所以使用fiddler修改后前端所呈现的响应内容并不是说也修改了数据库中存储的内容。

    3.具体操作
    点击inspectors监控面版下操作

    在这里插入图片描述
    注意:
    1、在做run to completion完成运行操作时一定要保持capturing捕捉的开启,防止前端绕过fiddler工具与服务器直接交互,就无法实现制造伪响应了。
    2、点击run to completion该请求展示到前端,但是请求有时会有重定向,所以第一请求有可能并不能见到真正的响应内容,所以点击run to completion后又会出现下一个url的响应又被截取,以此类推,反复截取响应内容,直到需要的响应出现为止,然后修改响应制造伪响应
    3、修改响应内容的时候点击TextView(文本视图)去修改

    展开全文
  • 设置断点 当Jlink连接到HCPU/LCPU的时候,通常系统已经初始化完成,如果需要调试初始化,例如冷启动或者standby睡眠唤醒, 需要将系统停留在尽早的地方。 建议用户可以修改系统初始化程序, HCPU drivers/cmsis/sf...

    设置断点

    当Jlink连接到HCPU/LCPU的时候,通常系统已经初始化完成,如果需要调试初始化,例如冷启动或者standby睡眠唤醒, 需要将系统停留在尽早的地方。
    建议用户可以修改系统初始化程序,

    • HCPU
      drivers/cmsis/sf32lb55x/Templates/arm/startup_bf0_hcpu.S
    • LCPU
      drivers/cmsis/sf32lb55x/Templates/arm/startup_bf0_lcpu.S
      在Reset_Handler中的第一条指令去掉注释 ';', 变为
      B .
      这样CPU启动,就会停留在第一条指令,当Jlink连接成功后,可以改变PC寄存器 (+2), 设置所需断点,从而调试初始化过程。

    同样的方法也可以在其他的地方使用,使系统停留在某个事件发生的时刻,在所怀疑有问题的地方,如果是C文件,加入
    _asm("B .");
    可以使系统停留在这个指令,这个时候,再连接Jlink, 可以改变PC寄存器 (+2), 继续调试。

    Note

    不能使用while(1); 否则系统会优化,将while(1)之后的语句都无效了。

    展开全文
  • 按Ctrl-D开始调试(在Mac上,其他人可能有不同的快捷方式) 断点应该可以正常工作,因为重新加载器不活动。 进行所需的任何代码更改。 准备好重新启动时,再次按Ctrl-D。第一次执行此操作时,您将收到确认提示,...
  • matlab调试代码时总是遇到这样一个奇怪的问题,就是当我在主程序(.m脚本)中调用子函数并在子函数中设置断点,然后开始调试运行主程序。。。发现主程序直接运行到结束而并没有在调用子函数的时候在所设置的断点处停...
  • Debug模式下进行断点调试,发现action文件的断点可以起作用,impl实现层文件的断点不起作用;仔细查看断点符号 正常的断点显示的是一个对号和一个小圆点,不起作用的没有对号; 网上解决方案: 1、设置了Skip All ...
  • eclipse断点不起作用这是很多程序员在调试程序插入断点后可能存在的问题,eclipse断点无效主要就是调试器的设置问题,只需要选择将行号属性添加至生成的类文件(由调试器使用)即可解决相应的问题,调试后还可以一键...
  • 使用visual studio远程开发调试linux服务器的代码,在使用visual studio调试的时候,打了断点也不成功,程序直接全速执行。 我直接在linux服务器命令行编译出来之后,用下面命令可以看到,程序编译的是debug版本。 ...
  • 断点没起作用问题

    2021-08-24 14:26:41
    在给项目打断点测试时,一定要看好自己测试的ip地址,是线上的还是本地的,真的是让人抓狂,测了半个小时,断点就是不起作用。自己记录一下。
  • 硬件断点(简称:HBP)是处理器的特性之一,它的工作原理我不是很...硬件执行断点与内存的CC断点作用一样,但硬件执行断点并不会将指令首字节修改为CC,所以更难检测。但是有些程序会使用一些技巧来清除硬件断点,应对方法我们
  • not stopping on breakpoints breakpoint not working 原因: 1) php.ini xdebug 端口不配置的情况下,默认是 ...log = "D:\BtSoft\WebSoft\temp\xdebug\debug.log" zend_extension=php_xdebug.dll 否则断点不起作用
  • 我试图在日食中调试junit测试,但是我的断点没有触发(除非它们在第一行或第二行).我尝试删除并重新创建工作区中的所有断点,清理项目,创建新的调试配置,以及单独运行测试方法以及使用其他方法作为测试类的一部分.但都...
  • 实际上你不小心选中了Mute Breakpoints,使得断点不起作用了。若要断点作用只要取消选中即可。如下图所示:
  • 我知道关于这个问题有无数的问题,但无论我尝试过什么,我都没有运气.我遇到的问题是关于使用NetBeans和XDebug时的断点(如果影响任何事情,则在Windows ...但是,任何其他文件中的任何其他断点都不起作用.我已经在php....
  • 1.前言在我跨入OllyDbg的门的时候,就对ollydbg里面的各种断点充满了疑问,以前我总是不明白普通断点,内存断点,硬件断点有什么区别,他们为什么有些时候不能混用,他们的原理是什么,在学习了前辈们的文章以后,...
  • Ollydbg之断点设置

    2021-10-15 21:40:57
    断点2.INT3断点3.内存断点4.硬件断点实验目的实验环境实验内容和步骤1.熟练使用OD设置INT3断点2.了解使用OD设置内存断点3.了解使用OD设置硬件断点 预备知识 1.断点 断点,是调试器的核心功能之一,可以让程序中断在...
  • 外部断点无法生效

    2021-04-13 16:49:40
    有 如下勾选即可 查询当前所有断点,选择激活即可 事务码 SRDEBUG
  • 一、环境搭建 1.下载 vscode 2.安装 gcc 和 g++ 3.然后在 vscode 的 Extensions ... 到这里就可以断点调试了,在 vscode 打开文档的左侧添加断点 其实 windows 和 linux 搭建 vscode 的方式差不多,一步步对应上即可。
  • 作用作用域:是指一个变量的作用的范围 全局作用域: 直接编写在script标签的js代码,是全局作用域; 全局作用域在页面打开时创建,在页面关闭时销毁; 在全局作用中有一个全局对象window,它代表的是一个浏览器...
  • OllyDbg断点详解

    2021-11-01 16:43:09
    1.INT3断点 INT3断点也被称为CC断点 直接按F2即可设置,可以放置无数个断点,但是软件内的程序易被校验到从而失效 2.硬件断点 硬件断点和DRx调试器有关,所以只能放置四个断点,右键后选择Breakpoint,再选择...
  • 我正在使用Android教程,我刚刚进入调试部分,我想知道断点的目的是什么.我还说不出来……它是否真的停止了应用程序,所以我可以肯定它会一直运行到那一点,或者我可以设置多个断点并使用它们作为标记来“从断点断点...
  • VS Code 断点调试golang

    2021-01-12 00:17:18
    实现效果安装 delvewindowsgo get -u github.com/go-delve/delve/cmd/dlvlinux方式一:go get -u github.com/go-delve/delve/cmd/dlv方式二$ git clone https://github.com/go-delve/delve.git $GOPATH/src/github....
  • 特别是经常使用 GDB 的童鞋,对它提供的强大功能更加如数家珍,其中就不乏 breakpoint(断点)。刚好最近做到 Ptrace 相关的实验,也顺便撸了这篇小文来分享下 断点 当中的道理。简单 GDB 示范// test.cpp#include#...
  • Golang断点续传

    2021-01-08 15:01:39
    目录前言一、Seek介绍二、Seek的使用1.SeekStart2.SeekCurrent3.SeekEnd三、断点续传 前言 对于一些较大文件的上传下载,我们期望的是能够一次就完成,这样不仅节省时间也节省用户流量,用户体验也会更好等等。但是...
  • VS调试:函数断点与数据断点

    千次阅读 2021-01-06 09:39:22
    断点,是Debug过程中最常用的功能。 但是,关于断点VS还有很多高级功能,本文使用的是VS2017,介绍函数断点与数据断点的使用场景以及使用方法。 1.普通断点 普通断点是最常接触的断点,VS中,在代码行左边栏灰色区域...
  • ILRuntime无法断点调试

    2021-08-03 23:50:35
    ILRuntime无法断点调试
  • 在切入正题之前需要了解一下IDEA的bug,了解完了之后build的作用也就昭然若揭了 相信在使用IDEA的时候 很多人都遇到过打不上断点的情况,原因就是部署到服务器上的代码中该行无法被debug e.g. 项目启动..

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,164
精华内容 34,865
关键字:

断点的作用