- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 C 编写一个程序,用户输入一些内容,如果其中一个单词在数组中(在本例中是 biblio),但是当我要测试它时给我段错误(核心转储)。我知道当程序尝试访问它无法访问的内存字段时会出现此错误,但我找不到它在哪里执行此操作以及如何修复它。有人可以帮助我吗?
#include <stdio.h>
#include <string.h>
int within(char* str, char * biblio[], int size)
{
char * aux;
for(int i = 0; i < size; i++)
{
aux = biblio[i];
if(strcmp(str, aux) == 0 )
return 1; //return 1 --> the word exists in biblio array
}
return 0;
}
int main()
{
int iterations = 5;
int size = 50, count = 0;
char * biblio[] = {"mostarda", "ketchup", "maionese"};
char * input[size];
char * str = NULL;
int ret;
while(iterations > 0)
{
do{
printf("Enter a value: ");
scanf("%s", str);
ret = within(str, biblio, sizeof (biblio));
if(ret == 1)
{
memset(input, 0, sizeof(input)); //clear biblio
break;
}
input[count] = str;
count++;
}while( (strcmp(str, "EOF")) == 0);
printf("%s", input);
iterations--;
}
return 0;
}
非常感谢!!!
最佳答案
通常,使用 gcc -g
进行编译以进行调试,然后在 gdb
下运行二进制文件。当它核心转储时,给 gdb 提供 where
命令来查看完整的调用堆栈,显示程序中失败的行号。
例如,这是我的 gdb session 找出原因的过程。我使用 gdb ./a.out
在 gdb 中运行程序,然后输入测试值。当它崩溃时,它显示错误出现在 strcmp
的(程序集)实现中(我没有该库源文件,因此“没有这样的文件或目录”。我去 up 1
将 View 在堆栈中向上移动一级(进入您的 within
函数),然后我将两个参数的值打印到 strcmp
。一其中显然不符合应有的样子。
Reading symbols from ./a.out...done.
(gdb) run
Starting program: /tmp/p/a.out
Enter a value: 10
Program received signal SIGSEGV, Segmentation fault.
__strcmp_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S:31
31 ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: No such file or directory.
(gdb) up 1
#1 0x00005555555547f4 in within (str=0x0, biblio=0x7fffffffe450, size=24) at foo.c:11
11 if(strcmp(str, aux) == 0 )
(gdb) print (str)
$1 = 0x0
(gdb) print (aux)
$2 = 0x555555554a44 "mostarda"
关于c - 给出段错误和 idk 在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50571180/
我得到了这个数组: backgrounds: { bc2: '/images/layout/images/backgrounds/bc2.jpg',
我正在用 C 编写一个程序,用户输入一些内容,如果其中一个单词在数组中(在本例中是 biblio),但是当我要测试它时给我段错误(核心转储)。我知道当程序尝试访问它无法访问的内存字段时会出现此错误,但
我的粘性导航有问题。问题似乎是我的 JS 没有应用我告诉它的类。你可以在这里查看http://test.makx.ca 这是我的代码。 $(window).scroll(function() {
我只是在做一个执行以下操作的程序。 您输入某物的“计数”。 然后为每个“计数”输入一个值,并用空格分隔 您将得到输出:其中有多少是重复的,哪个重复的数字最高,再次用空格分隔 基本上是这样的:输入: 8
我只是通过阅读一本书来学习Python,下面的代码用于显示try和 except命令。这些是有道理的,但我的问题是关于输出。执行时,spam(0)产生错误后,在下一行显示None,然后是42。No
您好,我尝试创建查询并添加此查询,查询错误: JOIN matakuliah ON nilai.idk = matakuliah.idk WHERE matakuliah.semester = 1 完
在我将 jar 文件添加到项目后,我似乎无法修复此错误: Execution failed for task ':app:dexDebug'. com.android.ide.common.proce
我是一名优秀的程序员,十分优秀!