Проблема с try\catch - bad breakpoint
Написал простой блок кода с использованием try\catch
Код:
try {
// Skip initial blankspace
while (isspace(*ptr)) ++ptr;
// Skip tagname
if (!isalpha(*ptr)) return;
while (!isspace(*ptr)) ++ptr;
// Skip blankspace after tagname
while (isspace(*ptr)) ++ptr;
} catch (...) {
//код просто для того, чтобы поймать breakpoint
int temp = 7; // вот тут стоит breakpoint
temp = 8;
return;
}
// Skip initial blankspace
while (isspace(*ptr)) ++ptr;
// Skip tagname
if (!isalpha(*ptr)) return;
while (!isspace(*ptr)) ++ptr;
// Skip blankspace after tagname
while (isspace(*ptr)) ++ptr;
} catch (...) {
//код просто для того, чтобы поймать breakpoint
int temp = 7; // вот тут стоит breakpoint
temp = 8;
return;
}
Задача: В отладке программа должна остановиться в breakpoint'e, который в catch
Проблема: почему-то, когда доходит до breakpoint'а, он каким-то чудесным образом переносится из блока catch в код, расположенный ниже
Код:
} catch (...) {
int temp = 7; // тут стоял breakpoint
temp = 8;
return;
}
while (*ptr && *ptr != '>') { //breakpoint оказывается здесь
....
}
int temp = 7; // тут стоял breakpoint
temp = 8;
return;
}
while (*ptr && *ptr != '>') { //breakpoint оказывается здесь
....
}
Вот, собственно, и проблема
Думал, что это может быть из-за того, что код в блоке catch не имеет "смысловой" нагрузки, поэтому игнорируется
Но, когда поместил в блок код, относящийся к работе, результат всё равно был тем же - breakpoint не срабатывает
Вопрос: кто-нибудь знает решение данной проблемы?
Буду очень благодарен за любые советы!
какую среду разработки и отладчик используете?
Но проблему кажись уже понял...
breakpoint сбрасывается вниз потому, что...
в catch он может зайти только в том случае, если в try был exception, а, поскольку в try то у меня, как оказалось, никакой и не exception, а обычная ошибка, компилятор, походу, посчитал, что breakpoint в catch никогда не зайдёт, и сбрасывает его...
Это версия человека, который мне подсказал, и моя)
Как-то так
Если breakpoint поставленный в catch срабатывает, значит catch выполняется