これは宿題です。特定の回答ではなく、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();
}
編集:コードは私のものではなく、割り当ての一部です