Я часто нахожу, что я устанавливаю точку останова. Где-то в коде и вручную включаю одну или несколько точек останова при ударе этой точки останова. Типичный случай - когда я отлаживаю unittest и не забочусь о предыдущих тестах.Включить точку останова B, если точка останова A была удалена
void testAddZeros()
{
Number a(0);
Number b(0);
Number result = a.add(b);
assert((a + b) == Number(0))
}
void testAddOnes()
{
Number a(1);
Number b(1);
Number result = a.add(b);
assert((a + b) == Number(2));
}
void testAddNegativeNumber()
{
Number a(1);
Number b(-1)
Number result = a.add(b);
assert((a + b) == Number(0));
}
Представьте себе, если testAddZeros()
и testAddOnes()
работает нормально, но testAddNegativeNumber()
. В этом случае установка точки останова на Number result = a.add(b);
станет естественным местом для начала отладки. Теперь представьте, что ошибка находится где-то глубоко внутри Number::add
, поэтому мы не очень заинтересованы в материалах, которые происходят в начале Numbers::add
. То, что я хочу сделать, - установить точку останова где-то внутри Numbers::add
, которая срабатывает только в том случае, если я внутри testAddNegativeNumber()
-test.
Есть ли способ автоматически включить точку останова B
, когда точка останова A
попала?
Вы проверили условные точки останова? Вероятно, вы могли бы использовать условие, на которое ударяется точка останова A, чтобы включить «условную» точку останова B. (В этом случае вам больше не нужна точка останова A) – ChristiaanV
@ChristiaanV: да, но я боюсь, что условные точки останова не будут достаточно в этом случае - по крайней мере, не в общем. – larsmoa
Не могли бы вы показать образец кода, где вы хотели бы использовать это? – ChristiaanV