0
我在条件语句中设置了一个断点,用于检查自定义数据类型的某个值。游戏将会中断,但是它的分界线完全超出了我的断点范围。观察变量表明,它第一次循环迭代时就会破坏,使得我的调试条件语句绝对无用。CodeBlocks断点忽略范围
在Visual Studio中,调试器会遵守范围,并且在条件语句中放置断点只会在该条件评估为true时停止游戏。为什么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;
}
}
您是否启用了任何优化? 'if'中的那些语句什么也不做,所以编译器可以在优化过程中丢弃它们。这意味着这些语句不会存在于实际的可执行文件中,因此您不能在它们上面放置断点。 –
@JoachimPileborg是的,我认为这是问题所在。删除优化标志后,其表现正常。谢谢!如果您将评论更改为解决方案,我会将其标记为解决方案。 – KongMD