Вы уже предложили оба основных варианта:
1. Условные точки останова
2. Код для проверки неправильного значения и с точкой останова, если так происходит
Первый вариант самый простой и лучший, но, к сожалению, на больших циклах он очень медленный! Если вы зациклите сотни тысяч итераций, единственным реальным вариантом будет №2. В варианте # 1 процессор прерывает отладчик на каждой итерации, затем он оценивает условие и, если условие прерывания ложно, он просто продолжает выполнение программы. Это происходит медленно, когда это происходит тысячи раз, на самом деле это медленно, если вы зацикливаетесь всего 1000 раз (в зависимости от оборудования, конечно)
Как я подозреваю, вам действительно нужно "глобальное" условие точки останова, которое должно нарушать программу, если выполняется определенное условие (размер массива == 0), к сожалению, такого, насколько мне известно, не существует. Я сделал функцию отладки, которая проверяет условие, и если оно истинно, оно делает что-то бессмысленное, если у меня установлена точка останова (т. Е. Вариант 2), тогда я часто вызываю эту функцию там, где подозреваю, что исходный сбой. Когда система сломается, вы можете использовать стек вызовов для определения ошибочного местоположения.