写C++程序时,遇到逻辑错误或者运行崩溃,光靠眼睛看代码很难发现问题。这时候,断点就是你的“探照灯”。比如你写了个数据备份工具,发现文件复制到一半就卡住,用断点可以一步步看程序走到哪出了问题。
什么是断点?
断点就是让程序运行到某一行代码时暂停,你可以查看当前变量的值、函数调用栈,甚至修改变量来测试不同情况。就像你在做饭时,每做完一步停下来尝一口,确认味道对了再继续。
在Visual Studio中设置断点
打开你的C++项目,在想暂停的代码行左侧点击,会出现一个红点,这就是断点了。比如:
int main() {
int a = 10;
int b = 0;
double result = a / b; // 在这行设断点
return 0;
}
运行程序,当执行到这一行前就会停下来。你可以把鼠标悬停在变量上,看到它们的实时值。
使用GDB命令行调试
如果你在Linux下开发,GDB是常用的调试工具。先用g++编译时加上-g参数:
g++ -g backup.cpp -o backup
然后启动GDB:
gdb ./backup
在GDB中设置断点:
break main
或者按行号:
break 10
输入run开始运行,程序会在断点处停下。用print命令查看变量:
print a
条件断点:只在特定情况下暂停
有时候你不希望每次循环都停下来。比如你在遍历文件列表做备份,只想看第5个文件出错的情况。可以在断点上加条件:
break 15 if i == 5
这样只有当i等于5时才会中断,省去手动跳过前四次的麻烦。
断点不是万能的
有些问题比如内存泄漏、多线程竞争,断点可能帮不上忙,甚至会掩盖问题。这时候得配合日志输出或者专门的分析工具。但对大多数新手来说,学会设断点已经能解决八成的bug了。
下次写完一段C++代码,别急着一口气跑通,先在关键位置打几个断点,看看程序是不是按你想的在走。调试不光是为了修bug,更是理解代码实际行为的过程。