C 如何使用gdb调试具有核心转储的代码?

C 如何使用gdb调试具有核心转储的代码?,c,terminal,gdb,C,Terminal,Gdb,这是一个关于字符串操作的简单程序,但我在运行时遇到了分段错误(核心转储) 我正在尝试用最新的ubuntu版本在终端上运行这个程序。 下面是一段代码 #include<stdio.h> void main() { char s1[50],s2[50]; int ch,i,j,l,l1,l2,flag,count1=0,count2=0; do { printf("\n MENU \n"); printf("\n 1.String concatenation \n"); printf(

这是一个关于字符串操作的简单程序,但我在运行时遇到了分段错误(核心转储)

我正在尝试用最新的ubuntu版本在终端上运行这个程序。 下面是一段代码

#include<stdio.h>

void main()
{
char s1[50],s2[50];
int ch,i,j,l,l1,l2,flag,count1=0,count2=0;
do
{
printf("\n MENU \n");
printf("\n 1.String concatenation \n");
printf("\n 2.String comparison \n");
printf("\n 3.Substring \n");
printf("\n Enter a choice ..."); 
scanf("%d",ch);
switch(ch)
{
 case 1:
 printf("\n Enter the first string \n");
 gets(s1);
 printf("\n Enter the second string \n");
 gets(s2);
 for(int i=0;s1[i]!='\0';i++)
#包括
void main()
{
字符s1[50],s2[50];
int ch,i,j,l,l1,l2,flag,count1=0,count2=0;
做
{
printf(“\n菜单\n”);
printf(“\n 1.字符串串联\n”);
printf(“\n 2.字符串比较\n”);
printf(“\n 3.子字符串\n”);
printf(“\n输入一个选项…”);
scanf(“%d”,ch);
开关(ch)
{
案例1:
printf(“\n输入第一个字符串\n”);
获取(s1);
printf(“\n输入第二个字符串\n”);
获取(s2);
对于(int i=0;s1[i]!='\0';i++)
代码一直工作到显示菜单部分,但随后显示分段故障(堆芯转储)

scanf("%d",ch); --> scanf("%d",&ch);
scanf
获取要存储值的变量的地址

阅读

它指定,

d匹配可选带符号的十进制整数;下一个指针必须 是指向int的指针


OP仍然不知道如何使用
gdb
@user202729你可以自由地写下你自己的答案,教他如何使用gdb。我认为这个选项太简单了,解决了OP遇到的具体问题。谢谢你……这很有效,但当我尝试运行程序的其余部分时,我的gets()函数不起作用。知道如何修复吗?@user202729不太好。可能是重复的