Я реализую функцию print_array в C++ и использовал gdb для ее отладки. Кажется, что проблема в цикле for, но я действительно не могу понять, почему.«Нет кадра в данный момент выполняется в указанном блоке» ошибка в gdb
Код:
void print_array(const int array[], const int length) {
cout << "[";
for (int i=0; i<length; i++) {
// Last element
if (i == length-1) {
cout << array[i] << "]" << endl;
} else {
// Any other element
cout << array[i] << ", ";
}
}
cout << endl;
}
Основная функция:
int main() {
int array[] = {1, 3, 5, 7, 9, 15, 15, 16, 40, 70};
int length = 10;
cout << "Array is = ";
print_array(array, length);
.
.
.
Отладка это с помощью GDB, и установив его смотреть я, я получаю следующее
.
.
.
Thread 2 hit Hardware watchpoint 4: i
Old value = 9
New value = 10
0x0000000100001afd in print_array (array=0x7fff5fbff8e0, length=10) at binary_search.cpp:8
8 for (int i=0; i<length; i++) {
(gdb)
No frame is currently executing in specified block
0x0000000100001b02 in print_array (array=0x7fff5fbff8e0, length=10) at binary_search.cpp:8
8 for (int i=0; i<length; i++) {
(gdb)
No frame is currently executing in specified block
Command aborted.
(gdb)
Основная вещь, которую нужно проверить, - это цикл for, проходящий по массиву, что, похоже, не так (если я не пропущу, так что очевидно, метид).
«Настоящая причина», задаваемая этим вопросом, заключается в том, что gdb, кажется, дает странные результаты в целом. Я установил в Mac 10.12.3, для которого нет поддержки, как есть. Таким образом, установка была длительной, и я видел другие подобные случаи в Интернете, где люди столкнулись с странными проблемами после установки gdb на Mac 10.12.3.
Похоже, вы вводите пустую строку в приглашении gdb, чтобы повторить предыдущую команду. Какая команда? –
Я перешагивал код, но поскольку gdb повторяет последнюю команду, используемую при нажатии кнопки enter, она не отображается. Должен быть яснее там (отмечено!) – mcansado