我正在C++中實現print_array函數,並且正在使用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中,因爲它沒有支持。因此,安裝過程非常漫長,我在網上看到過其他類似的案例,在Mac 10.12.3上安裝gdb後,人們遇到了一些奇怪的問題。
它看起來像你在gdb提示符下輸入一個空行,以重複前面的命令。那是什麼命令? –
我正在逐步完成代碼,但由於gdb重複當您按Enter鍵時使用的最後一個命令,它不會顯示。應該更清楚了(注意!) – mcansado