Tôi thường thấy mình đặt điểm ngắt A ở đâu đó trong mã và bật thủ công một hoặc nhiều điểm ngắt khi điểm ngắt này được nhấn. Một trường hợp điển hình là khi tôi gỡ lỗi một cách không liên quan và không quan tâm đến các bài kiểm tra trước đó.Bật điểm ngắt B nếu điểm ngắt A bị trúng
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));
}
Hãy tưởng tượng nếu testAddZeros()
và testAddOnes()
chạy tốt, nhưng testAddNegativeNumber()
. Trong trường hợp này, thiết lập một điểm ngắt tại Number result = a.add(b);
sẽ là một nơi tự nhiên để bắt đầu gỡ lỗi. Bây giờ hãy tưởng tượng rằng lỗi nằm ở đâu đó sâu bên trong Number::add
, vì vậy chúng tôi không thực sự can thiệp vào những thứ xảy ra sớm trong Numbers::add
. Những gì tôi muốn làm là thiết lập một điểm dừng ở đâu đó bên trong Numbers::add
mà chỉ kích hoạt nếu tôi ở trong thử nghiệm testAddNegativeNumber()
.
Có cách nào để tự động bật điểm ngắt B
khi ngắt điểm A
bị truy cập không?
Bạn đã kiểm tra điểm ngắt có điều kiện chưa? Có lẽ bạn có thể sử dụng điều kiện mà trên đó breakpoint A được nhấn để kích hoạt 'có điều kiện' breakpoint B. (Trong trường hợp đó bạn không cần breakpoint A nữa) – ChristiaanV
@ChristiaanV: vâng, nhưng tôi sợ các điểm ngắt có điều kiện sẽ không đủ trong trường hợp này - ít nhất là không nói chung. – larsmoa
Bạn có thể hiển thị mẫu mã, nơi bạn muốn sử dụng mẫu này không? – ChristiaanV