// 一个循环中的 Bug:第 1000 次才出现
void process_data(std::vector<int>& data) {
for (int i = 0; i < data.size(); i++) {
// 只有在 i = 1000 时才崩溃
if (i == 1000) {
data[i] = data[2000]; // 如果 data 不够大就越界了
}
}
}
# ❌ 普通断点:要手动按 1000 次 continue
(gdb) break process_data
# ✅ 条件断点:直接停在崩溃的那次循环
(gdb) break process_data if i == 1000
(gdb) run
Breakpoint 1, process_data at main.cpp:15
(gdb) print data.size() # 查看是否越界
$1 = 1500 # size = 1500 < 2000,越界了!
线程条件断点:
# 只在线程 3 触发断点
break worker if thread == 3