我在检查自定义数据类型的某个值的条件语句中设置了一个断点。游戏会中断,但它中断的线完全超出了我的断点范围。观察变量显示它只是在第一次迭代循环时中断,使我的调试条件语句完全无用。
在 Visual Studio 中,调试器会尊重范围,并且在条件语句中放置断点只会在条件评估为真时停止游戏。为什么 CodeBlocks 中的 GDB 调试器不是这种情况?是因为我在 Windows 中使用 GDB 吗?这是代码:
for(int j = 0 ; j < r->components[i].size() ; j++)
{
itype_id type = r->components[i][j].type;
int req = r->components[i][j].count;
//DEBUGGING ONLY!!!!!!!!!
if(type == itm_coffee_raw)
{
int pleaseStop = 0;
if(pleaseStop == 0) //BREAKPOINT IS ON THIS LINE
bool dontstoptillyougetenough = true;
}
if (itypes[type]->count_by_charges() && req > 0) //GAME BREAKS HERE
{
if (crafting_inv.has_charges(type, req))
{
has_comp = true;
break;
}
}
else if (crafting_inv.has_amount(type, abs(req)))
{
has_comp = true;
break;
}
}