这是一个家庭作业,我只想要 gdb 的帮助,而不是具体的答案。
我对 gdb 没有任何经验,也没有什么终端经验。我在网上按照一个简单的示例使用 gdb 调试了一些代码,但在示例中 gdb 指出运行代码时发生了问题。当我试图模仿这个分配的过程时,gdb 什么也没说。我对 C 语言还有些陌生,但是当我查看代码时我会发现问题,而 gdb 什么也没说。
假设文件名为 test.c,在终端中我键入 gcc test.c,它给了我一个警告,因为printf()
存在但#include <stdio.h>
不存在,这很好,因为这应该是错误的。
它还会产生 a.out ,如果我在终端中使用 ./a.out 运行它,则不会发生任何事情。终端已经为我的下一个输入做好了准备,没有任何消息。如果我输入 gdb ./a.out 然后运行它只会告诉我程序正常退出。
有人可以指出我必须做什么才能使 gdb 指向错误吗?
// insertion sort, several errors
int X[10], // input array
Y[10], // workspace array
NumInputs, // length of input array
NumY = 0; // current number of
// elements in Y
void GetArgs(int AC, char **AV) {
int I;
NumInputs = AC - 1;
for (I = 0; I < NumInputs; I++) X[I] = atoi(AV[I+1]);
}
void ScootOver(int JJ) {
int K;
for (K = NumY-1; K > JJ; K++) Y[K] = Y[K-1];
}
void Insert(int NewY) {
int J;
if (NumY = 0) { // Y empty so far,
// easy case
Y[0] = NewY;
return;
}
// need to insert just before the first Y
// element that NewY is less than
for (J = 0; J < NumY; J++) {
if (NewY < Y[J]) {
// shift Y[J], Y[J+1],... rightward
// before inserting NewY
ScootOver(J);
Y[J] = NewY;
return;
}
}
}
void ProcessData() {
// insert new Y in the proper place
// among Y[0],...,Y[NumY-1]
for (NumY = 0; NumY < NumInputs; NumY++) Insert(X[NumY]);
}
void PrintResults() {
int I;
for (I = 0; I < NumInputs; I++) printf("%d\n",Y[I]);
}
int main(int Argc, char ** Argv) {
GetArgs(Argc,Argv);
ProcessData();
PrintResults();
}
编辑:代码不是我的,它是作业的一部分