第3章总结
本节阅读量:章节回顾
语法错误是在编写根据C++语言的语法无效的语句时发生的错误。编译器将捕获这些错误。
当语句在语法上是有效的,但没有做程序员想要做的事情时,就会发生语义错误。
从程序中查找和删除错误的过程称为调试。
我们可以使用五步过程来进行调试:
- 寻找错误原因
- 理解问题
- 决定如何修复
- 修复问题
- 重新测试
查找错误通常是调试中最困难的部分。
静态分析工具是分析代码并查找可能指示代码问题的语义问题的工具。
能够可靠地再现问题是调试中的第一个也是最重要的步骤。
我们可以使用许多策略来帮助发现问题:
- 注释掉代码。
- 使用输出语句验证代码流程。
- 打印值。
使用print语句时,请使用std::cerr而不是std::cout。但更好的方式是,避免通过打印语句进行调试。
日志文件是记录程序中发生的事件的文件。将信息写入日志文件的过程称为日志记录。
在不改变代码行为的情况下重新构造代码的过程称为重构。这通常是为了使您的程序更具组织性、模块化或性能更好。
单元测试是一种软件测试方法,通过该方法测试源代码的小单元,以确定它们是否正确。
防御性编程是一种程序员试图预测软件可能被滥用的所有方式的技术。这些误用通常可以被发现并减轻。
程序中跟踪的所有信息(变量值,已调用的函数,当前执行点)都是程序状态的一部分。
调试器是一种工具,它允许程序员控制程序的执行方式,并在程序运行时检查程序状态。集成调试器是集成到代码编辑器中的调试器。
单步调试是一组相关调试功能的名称,这些功能允许您逐语句单步执行我们的代码。
Step-into正常执行程序路径中的下一条语句,然后暂停执行。如果语句包含函数调用,将导致程序跳到被调用函数的顶部。
step-over正常执行程序路径中的下一条语句,然后暂停执行。如果语句包含函数调用,则step-over将执行该函数,并在函数执行后将控制权返回给您。
Step-out执行当前正在执行的函数中的所有剩余代码,然后在函数返回时将控制权返回给您。
Run-to-cursor执行程序,直到执行到达鼠标光标选择的语句。
继续按钮将运行程序,直到程序终止或命中断点。Start与continue相同,只是从程序的开头开始。
断点是一个特殊的标记,它告诉调试器在到达断点时停止程序的执行。
监视变量允许您在程序以调试模式执行时检查变量的值。监视窗口允许您检查变量或表达式的值。
调用堆栈是为到达当前执行点而执行的所有活动函数的列表。调用堆栈窗口是显示调用堆栈的调试器窗口。
