首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

vs单步调试及断点调试基本介绍(入门版详细图文介绍)

均相似,仅具体快捷键键位不同) //本文无废话,建议小萌新仔细阅读 // //本文无废话,建议小萌新仔细阅读 // //本文无废话,建议小萌新仔细阅读 // //注,用win10系统初学c/c+...// // // // 如上图 停止在断点行 解释:此时有两个断点,停在第一个断点处,前面的运行完,输出hello // 而下方窗口显示局部变量i的值是468,因为此时停在断点,还没有进入...for语句的初始化i为0,所以此时i的值是内存中的值 // // 而输出框中正常打印的hello代表从程序开始运行到第一个断点的这部分都一切正常—–按预期输出了hello // // 而输出框中正常打印的...hello代表从程序开始运行到第一个断点的这部分都一切正常—–按预期输出了hello // // 而输出框中正常打印的hello代表从程序开始运行到第一个断点的这部分都一切正常—–按预期输出了hello...f11逐语句,会进入函数块内部去调试 // // //再次强调,单步调试可以检查每一步是否符合预期,比如for循环是否越界,赋值是否正确等,内存分配问题,底层调用是否正确赋值,中间结果是否符合预期

3.9K40

Java基础巩固——异常

在Java程序运行时,常常会出现一些非正常的现象,这种情况称为运行错误。根据其性质可以分为错误和异常。 Java程序中所有抛出的异常都必须从Throwable派生而来。...一般来说,最常见的错误有程序进入死循环、内存泄露等。这种情况下,程序运行时本身无法解决问题,只能通过其他程序干预。Java对应的类为Error类。...Error类对象由Java虚拟机生成并抛弃(通常Java程序不对这类异常进行处理)。   异常是程序执行时遇到的非正常情况或意外行为。...其他则为非运行时异常,原因是程序碰到了意外情况,如输入\输出异常IOException等。...3.RuntimeException异常   在Java异常处理中,一般有两类异常:其一,就是通过throw语句,程序员在代码中人为的抛出的异常;另外一个是系统运行时异常,例如:被零除,空字符串,无效句柄等

46210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    丁点而内存知识

    在进程运行时,数据在磁盘和内存之间来回移动。 内存管理硬件负责把虚拟地址翻译为物理地址,并让一个进程始终运行于系统的真正内存中,应用程序员只看到虚拟地址,并不知道自己的进程在磁盘与内存之间来回切换。...内存对此事做出响应,并判断该引用是否有效。...如果无效,内核向进程发出一个“segmentation violation(段违规)”的信号,内核从磁盘取回该页,换入内存中,一旦页面进入内存,进程便被解锁,可以重新运行——进程本身并不知道它曾经因为页面换入事件等待了一会...堆:C和C++语言都支持动态内存申请,即程序运行期可以自由申请内存,这部分内存就是在堆空间申请的。堆位于2GB的最顶端,自上向下分配,这是避免和浮动栈混到一起,不好管理。...函数启动一个线程,很多时候需要向线程传参数,但是线程是异步启动的,即很可能启动函数已经退出了,而线程函数都还没有正式开始运行,因此,绝不能用启动函数的内部变量给线程传参。

    89240

    C++属性 - fallthrough

    自C++17开始,C++标准引入了[[fallthrough]]属性,用于在 switch 语句的 case 分支中明确表示代码逻辑允许从当前分支继续执行后续的分支。...因此,[[fallthrough]]属性可以提高代码的可读性,并帮助避免潜在的错误。...通常,在 C++ 中,如果 switch 语句的 case 分支没有 break,执行流将自动落到下一个分支。...以下是常见的误用场景: 4.1 忽略无效的 fallthrough [[fallthrough]] 属性只能用于 switch 语句中的 case 分支。如果在不合适的地方使用,编译器会产生错误。...]]; // 编译器会产生错误 } } 4.2 不在 switch 语句的末尾使用 [[fallthrough]] 必须紧接在 case 分支的最后一行使用,不能在 case 分支中间使用。

    9110

    【C语言总集篇】分支与循环篇——从不会到会的过程

    下面我们输入6来进行测试: 可以看到输入6之后很好的输出了休息日,最后我们再输入7来进行测试: 从上面的测试结果咱们可以看到,程序能够很好的运行,我们现在要确定一个问题,if……else if能不能也像这样简化...此时我们将default放在case 1的前面,我们可以看到,此时是能够正常运行的; 现在我们将default放在case 3和case 4的中间,可以看到程序同样也是能正常运行的; 通过这次测试,我们也验证了...a++然后再去判断是否小于5,这里涉及一个知识点后置++是先使用再++,所以此时我们看到的a仍然为0; 现在程序运行到了c++这一行,我们也能看到此时a=1,b=5,; 现在我们又进入了第二个循环,此时可以看到...我们来运行一下: 我们可以看到循环能够正常运行,这里我们可以得到结论: 在for循环中,for循环是可以通过多个变量来控制的。...下面我们来运行一下: 这里我们可以看到,程序进入了死循环,为什么会这样呢,我们来看看这个代码的运行流程: 从执行流程中我们可以看到,通过goto语句,每次在运行到a=5时就会跳转到循环外,从a=0开始进入循环判断

    40710

    《C++Primer》第五章 语句

    2. switch语句 case标签必须是整型常量表达式 任何两个case标签的值不能相同,否则会引发错误 如果某个case标签匹配成功,那么将从该标签开始往后顺序执行所有的case分支 一般不要省略...如果需要对序列中的元素执行写操作,循环变量必须声明为引用类型 不能通过范围for语句增加vector对象或者其他容器的元素,因为在范围for语句中预存了end()的值,一旦在序列中添加或者删除元素就会导致...end函数的值变得无效 do while语句 do while语句和while语句基本一致,唯一的区别在于不管条件的值如何,do while都会至少执行一次循环: do statement while...Sales_item对象相加,检查读入的记录是否是关于同一种书籍的,如果不是就输出一条信息然后退出: // 检查两条数据是不是关于同一种书籍的 if (item1.isbn() !...函数并终止当前程序的运行 对于需要处理异常并继续执行的程序,我们必须时刻清楚异常何时发生,异常发生后程序应如何确保对象有效、资源无泄漏和程序有无处于合理状态等 3.

    1K20

    C++关于main函数的几点说明

    1.main()函数的标准原型 main函数是C++程序的入口函数,C++标准规定main()函数的返回值类型为int,返回值用于表示程序的退出状态,如果返回0则表示程序正常退出,如果返回非0,则表示出现异常...); 当main()函数的返回值为int,而函数内没有出现return语句时,同样可以通过编译并正常运行。...所以,main()函数是C++程序经过特殊处理的函数,其他的返回值类型不是void的函数,如果没有使用return语句,编译器将报错。...<<endl; return '0'; } 以上程序可正常编译并运行。显而易见,string是不能作为main函数的返回值。如果将返回类型换成string类型,编译将报错,读者可自行验证。...In default A's constructor"<<endl; } }; A b; int main() { cout<<"In main()"<<endl; return 0; } 编译运行以上代码输出

    7.1K50

    VMP处理SEH

    关于finally块的说明 1.从try块进入finally块的正常控制流。...换句话说,如果控制流离开try块并自然进入finally块,AbnormalTermination将返回FALSE。...在except块中代码执行完之后,系统考虑这个要被处理的异常并允许应用程序继续执行。这种机制使Windows应用程序可以抓住错误并处理错误,再使程序继续运行,不需要用户知道错误的发生。...int j=0; } } 1.SEHTest开始执行,进入它的__try块并调用Sub_SEHTest 2.Sub_SEHTest开始执行,等到信标,然后除0产生异常 3.系统因此取得控制,开始搜索一个与...5.与浮点数有关的异常     EXCEPTION_FLT_DENORMAL_OPERAND:浮点操作中的一个操作数不正常。不正常的值是一个太小的值,不能表示标准的浮点值。

    1.6K33

    计算机小白的成长历程——分支与循环(4)

    for语句的循环次数,也是执行语句的执行次数,更是变量i的个数,我们可以从这种写法中直接判断出for语句在正常运行时需要执行多少次。...执行了a++然后再去判断是否小于5,这里涉及一个知识点后置++是先使用再++,所以此时我们看到的a仍然为0; 现在程序运行到了c++这一行,我们也能看到此时a=1,b=5,; 现在我们又进入了第二个循环...这里我们可以得出结论: 省略for循环中的变量语句后,变量在进入循环时并不能初始化。...+; printf("hehe%d\n", c); } return 0; } 从这个代码中我们就可以看到,此时的for循环中通过变量x和变量y来进行控制,能否正常运行呢?...我们来运行一下: 我们可以看到循环能够正常运行,这里我们可以得到结论: 在for循环中,for循环是可以通过多个变量来控制的。

    16730

    Python 异常处理总结

    异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。 异常是Python对象,表示一个错误。...如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。...如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。...以上方式try-except语句捕获所有发生的异常。但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息。因为它捕获所有的异常。...finally块中的所有语句执行后,异常被再次提出,并执行except块代码。参数的内容不同于异常。 异常的参数 一个异常可以带上参数,可作为输出的异常信息参数。

    1.1K60

    异常--python异常处理

    语法: 以下为简单的try....except...else的语法: try: 语句> #运行别的代码 except : 语句> #如果在try部份引发了'name...如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。...如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。...finally块中的所有语句执行后,异常被再次触发,并执行except块代码。 参数的内容不同于异常。 异常的参数 一个异常可以带上参数,可作为输出的异常信息参数。...你可以通过except语句来捕获异常的参数,如下所示: try: 正常的操作 ...................... except ExceptionType, Argument: 你可以在这输出

    2.8K20

    python 异常处理

    一.异常的概念 一般情况,python无法正常处理程序时,就是会产生异常,举个例子: 1.大家都知道分母不能为0,如果分母为0,程序必然崩溃; x = 3/0 程序崩溃/报错:ZeroDivisionError...) print("程序正常结束") 输出结果: 异常说明:分母不能为0 程序正常结束 2.捕获指定异常 try: 语句 > except : print('异常说明'...") 输出结果: 异常说明:文件读取失败 程序正常结束 3.捕获多个异常 try: 语句 > except : print('异常说明1') except < 异常名...") 输出结果: 异常说明:IOError 程序正常结束 4.万能的异常捕获 try: 语句 > except Exception as e: # 自动识别异常信息,并将异常信息保存在e...") 输出结果: hello world i love you 程序正常结束 6.异常中的finally try…finally…语句无论是否发生异常都将会执行最后的代码。

    1.2K40

    25.python 异常处理

    一.异常的概念 一般情况,python无法正常处理程序时,就是会产生异常,举个例子: 1.大家都知道分母不能为0,如果分母为0,程序必然崩溃; x = 3/0 程序崩溃/报错:ZeroDivisionError...) print("程序正常结束") 输出结果: 异常说明:分母不能为0 程序正常结束 2.捕获指定异常 try: 语句 > except : print('异常说明...") 输出结果: 异常说明:文件读取失败 程序正常结束 3.捕获多个异常 try: 语句 > except : print('异常说明1') except < 异常名...") 输出结果: 异常说明:IOError 程序正常结束 4.万能的异常捕获 try: 语句 > except Exception as e: # 自动识别异常信息,并将异常信息保存在...") 输出结果: hello world i love you 程序正常结束 6.异常中的finally try…finally…语句无论是否发生异常都将会执行最后的代码。

    62360

    【译】Rust与智能指针

    , a); } 它可以成功运行,但是如果没有注释最后的打印语句会导致编译错误,因为a在当它被赋予b.next的时候被移动(move)了。...C++ unique pointer 能提供类似的好处,但是他们不能提供编译期的内存安全保证;对一个无效的指针进行解引用会在运行时出错。...尽管 shared pointer 用起来更加简单,但是它也不能避免 C++的安全问题。未注释上面最后一条打印语句会导致运行时的段错误。..., b); } 这段代码可以正常编译运行,但是当最后两行被注释的打印语句取消注释后,输出结果就变得有趣了。 ? 对任何一个节点的打印都会无限循环,然后导致栈溢出。...这一点在输出中也很明显,在输出中,weak pointer 没有被展开,而仅仅是注释为(Weak)。 C++ 在 C++中也有 weak pointer 与 Rust 中的相对应。

    1.1K21

    Visual Studio 调试系列3 断点

    按下F5,启动调试,由于第一次 index 等于0,第一次进入循环,结束前 index的值未改变仍然为0,没有改变,所以37行断点没有命中,直接走到43行的正常断点处。 ?...进入到第三次循环时,按下F5,由于 index = 2,值更改了,满足设置的条件,所以命中了37行的断点。 ? 如果使用无效语法设置断点条件,则会显示警告消息。...提醒:断点条件 模式下进行调试,不能按F10,只能按F5进行调试才能看到实际效果。 08 断点操作和跟踪点 “跟踪点”是将消息打印到“输出”窗口的断点 。...跟踪点的作用像这种编程语言中的一个临时跟踪语句。 若要设置跟踪点: 右键单击断点并选择操作。 或者,在断点设置窗口中,悬停在所需断点,选择设置图标,,然后选择操作。...输入中的消息将消息记录到输出窗口字段。 消息可以包含通用文本字符串,值的变量或表达式括在大括号和格式说明符 ( C# 并 C++ ) 的值。

    5.4K20

    【C++】内联函数 ④ ( C++ 编译优化 - 没有 inline 关键字修饰的函数也可能被内联 | C++ 编译器内联限制 | 内联失败的几种情况 )

    ; 即使函数被内联 , 也不能保证 程序的性能 一定会提高 ; 2、C++ 编译器的内联优化 简单且频繁调用的函数 内联大概率成功 , 复杂的函数 大概率内联失败 , 内联成功可能会增加代码的大小 ,...也可能会导致程序运行速度变慢 ; 可以通过设置调整 C++ 编译器 的参数 和 优化级别 , 优化编译后的程序运行效果 ; 3、内联优化细节 即使没有使用inline关键字修饰的函数 , C++编译器...+ 编译器内联限制 1、内联失败的几种情况 内联失败的几种情况 : 如果 内联函数 有如下情况 , 即使使用 inline 关键字声明内联函数 , 也是无效的 ; 函数中存在循环 : 内联函数中 不能存在任何形式的...循环语句 , 如 : for / foreach / while / do while 循环 ; 函数中有很多条件判定 : 内联函数中 不能存在过多的条件判定语句 , 条件判断就意味着有无效的指令 ,...非常浪费空间 ; 一般是不能超过 20 ~ 30 个条件判断语句 , 具体数目可以通过编译器配置 ; 函数体庞大 : 函数体的代码不能太多 , 函数指令太多 , 在调用位置插入的指令就很多 , 会浪费很多代码空间

    34130

    python的异常处理

    如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。...如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印默认的出错信息)。...但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息。因为它捕获所有的异常。...finally块中的所有语句执行后,异常被再次触发,并执行except块代码。参数的内容不同于异常。----异常的参数一个异常可以带上参数,可作为输出的异常信息参数。...你可以通过except语句来捕获异常的参数,如下所示:try: 正常的操作 ......................except ExceptionType, Argument: 你可以在这输出

    1K40

    十三、异常、类型转换和 lambda

    这些异常类包括: std::logic_error:用于报告程序逻辑错误,如无效参数或无效操作。 std::runtime_error:用于报告运行时错误,如超出范围的数组访问。...如果一个标记为 noexcept 的函数尝试抛出异常,程序将调用 std::terminate(),导致程序非正常退出。...函数可以通过输出参数返回错误码,以便调用者可以检查并采取相应的行动。...return ErrorCode::Success; } 输出参数 输出参数是函数参数的一种,用于从函数返回额外的信息。...return_type:返回类型,如果lambda表达式体中的代码块有返回语句,则需要指定返回类型(除了lambda表达式体只包含一个返回语句且编译器可以自动推导返回类型的情况)。

    7510
    领券