我正在尝试读取名为data的文本文件,然后使用mergesort对其进行排序。我通过键入 mergeSort<来运行终端命令。数据, 但得到分段错误。数据文本文件只是一个随机数列表。
mergesort的代码如下:
#include "mySort.h"
#include <stdio.h>
#include <stdlib.h>
#define MAX 50
void mySort(int array[], unsigned int first, unsigned int last)
{
int mid;
int i;
int j;
int k;
mid = 0;
i = 0;
j = 0;
k = 0;
int Larr[MAX], Rarr[MAX];
if (first < last)
{
mid = (first - last - 1)/2;
mySort(array, first, mid);
mySort(array, mid+1, last);
for(i = 0; i < (mid - (first+1)); i++)
Larr[i] = array[i + first -1];
for(j = 0; j < (last - mid); j++)
Rarr[j] = array[mid + j];
Larr[mid - first + 1] = 9999999;
Rarr[last - mid + 1] = 9999999;
i = 0;
j = 0;
for(k = first; k <= last; k++)
{
if (myCompare(Larr[i], Rarr[j]) < 0)
{
myCopy(&Larr[i],&array[k]);
i++;
}
else
{
myCopy(&Rarr[j],&array[k]);
j++;
}
}
}
}
答案 0 :(得分:1)
gcc -g
编译以确保您已启用调试。ulimit -c unlimited
。这可确保在发生段错误时创建核心。gdb ./mergeSort core.XXX
。当gdb启动时,使用'bt'命令获取回溯并查看出错的地方。从源文件所在的同一目录运行gdb。在调试时查看这些链接。
http://heather.cs.ucdavis.edu/~matloff/UnixAndC/CLanguage/Debug.html