GDB - " strlen.S:没有这样的文件或目录"

时间:2018-05-22 06:57:53

标签: c gdb

编辑:为了澄清这是一个关于我在gdb中遇到的错误的问题,如果它是正常的行为,不是关于天气局部变量可以在其范围之外访问。

最近,我一直在做一些C练习。我会像这样编译我的程序 -

gcc -g -o ../bin/prog prog.c

他们会像这样调试 -

gdb ../bin/prog (gdb) run < ../bin/input

然而,每次我这样做时,如果不是同样的错误,我会遇到 -

Starting program: /home/user/workspace/c exercises/prog/bin/prog < ../bin/input

Program received signal SIGSEGV, Segmentation fault.
__strlen_ia32 () at ../sysdeps/i386/i686/multiarch/../../i586/strlen.S:94
 94      ../sysdeps/i386/i686/multiarch/../../i586/strlen.S: No such file or directory

以下是此特定事件的相应来源,我正在运行Debian 9 i386。我不认为它与我的程序有关,因为我对程序有效时会遇到同样的错误。它始终无法找到一些.so或.S文件。提前谢谢。

/** Exercise 1-19
 *
 *  Write a function reverse(s) that reverses the character string s.
 *  Use it to write a program that reverses its input a line at a time.
 */

#include <stdio.h>

#define MAX 1000

int getLine(char*,int);
char* reverse(char*);

int main()
{
    char line[MAX];
    while(getLine(line, MAX) > 0)
        puts(reverse(line));
}

int getLine(char s[], int lim)
{
    int c,i;

    for(i=0;(c=getchar())!=EOF && c!='\n';i++)
        s[i] = c;

    if(c == '\n')
        s[i++] == '\n';
    s[i] = '\0';
    return i;
}

char* reverse(char s[])
{
    char rev[MAX];
    int i;

    for(i=MAX-1; s[i]!='\0' && i >= 0; i--);
    for(int j=1; j<=i; j++)
        rev[j] = s[i-j];
    rev[i] = '\0';
    return rev;
}

0 个答案:

没有答案