bszs 发表于 2021-9-11 21:14:20

vscode调试出现问题

#include<stdio.h>
#include<math.h>
int main()
{
    int i,j,k=2,l=1,sum=0;
    for(i=2;i<=10000;i++)
    {
      l=1;
      j=(int)sqrt(i);
      for(k=2;k<=j;k++)
      {
            if(i%k==0)
            {
                l=0;
                break;
            }
      }
      if(l)
      {
            sum=sum+1;
      }
    }
    printf("%d",sum);
}
大佬救命!!!!!!
我在做课后作业的时候写了一段代码,想调试一下看看是怎么运行的,但是上面的代码在运行到第九行的时候提示说无法打开函数文件sqrt,像下图一样,但是我让程序正常运行是可以得到正确结果的,这说明sqrt函数文件被成功引用,调试的时候在sqrt那一行运行不下去一直提示说没有找到sqrt文件但是不调试正常运行是可以正确得出结果的,我纯小白vscode没用几天一脸懵逼,于是我又新创了一个文件写了下面几行代码:
#include <stdio.h>
#include <math.h>

int main()
{
      int a;
      a = (int)sqrt(16);
      printf("%d\n", a);
}
更让我蒙的是这段代码include<math.h>也引用了sqrt函数,但是正常运行和调试都没问题,请大佬帮我看看是vscode的问题还是我第一段代码写的有问题。

人造人 发表于 2021-9-11 21:14:21

sqrt 是库函数,当然没有源代码了
执行这些没有源代码的函数的时候要选 单步步过,不要选单步步入
就是不跟进这个函数里面去

大马强 发表于 2021-9-11 21:17:10

可能是vc的问题吧
我devc++调试没问题

bszs 发表于 2021-9-11 21:18:19

我又试了一下break和continue课后作业里求素数的答案,发现都是一样的问题,调试不成功正常运行可以

大马强 发表于 2021-9-11 21:27:10

bszs 发表于 2021-9-11 21:18
我又试了一下break和continue课后作业里求素数的答案,发现都是一样的问题,调试不成功正常运行可以

感觉是系统环境变量问题
我也不懂{:10_266:}等大佬来看吧

bszs 发表于 2021-9-11 22:07:15

大马强 发表于 2021-9-11 21:27
感觉是系统环境变量问题
我也不懂等大佬来看吧

不晓得 ,如果是vc的问题,我写的第二段代码按理说也有问题

bszs 发表于 2021-9-12 00:38:47

人造人 发表于 2021-9-11 23:38
sqrt 是库函数,当然没有源代码了
执行这些没有源代码的函数的时候要选 单步步过,不要选单步步入
就是不 ...

{:5_106:}明白了明白了,原来是这个原因,我还以为我vscode有问题呢{:10_245:}

bszs 发表于 2021-9-12 14:16:05

人造人 发表于 2021-9-11 21:14
sqrt 是库函数,当然没有源代码了
执行这些没有源代码的函数的时候要选 单步步过,不要选单步步入
就是不 ...

还有一个问题,我试了下下面这段代码
#include<stdio.h>
#include<math.h>
int main()
{
    int a,b;
    a=(int)sqrt(25);
    b=(int)sqrt(16);
    printf("25的平方根是%d\n",a);
    printf("16的平方根是%d\n",b);
}
调试的时候点的是单步调试没有点单步跳过也能得出结果,这是为什么呢?

人造人 发表于 2021-9-12 18:26:42

bszs 发表于 2021-9-12 14:16
还有一个问题,我试了下下面这段代码

调试的时候点的是单步调试没有点单步跳过也能得出结果,这是为什 ...

左边怎么那么多的断点,还有其他文件的
你重新创建一个项目,然后再试试上面的那个代码

bszs 发表于 2021-9-12 19:19:25

人造人 发表于 2021-9-12 18:26
左边怎么那么多的断点,还有其他文件的
你重新创建一个项目,然后再试试上面的那个代码

#include<stdio.h>
#include<math.h>
int main()
{
    int a,b;
    a=(int)sqrt(25);
    b=(int)sqrt(16);
    printf("25的平方根是%d\n",a);
    printf("16的平方根是%d\n",b);
}
还是这段代码,我把所有文件都关了又重开一个,只开一个断点,调试的时候是能够正常进行的

人造人 发表于 2021-9-12 19:35:23

重新创建一个项目,调试这个程序试试
#include<stdio.h>
#include<math.h>
int main()
{
    int i,j,k=2,l=1,sum=0;
    for(i=2;i<=10000;i++)
    {
      l=1;
      j=(int)sqrt(i);
      for(k=2;k<=j;k++)
      {
            if(i%k==0)
            {
                l=0;
                break;
            }
      }
      if(l)
      {
            sum=sum+1;
      }
    }
    printf("%d",sum);
}

bszs 发表于 2021-9-12 20:00:04

人造人 发表于 2021-9-12 19:35
重新创建一个项目,调试这个程序试试

试了,这个不调试能够正常运行,如果调试的话一直点单步调试到第九行会提示找不到文件,退出重进到第九行时点击单步跳过又能正常执行

人造人 发表于 2021-9-12 20:09:04

bszs 发表于 2021-9-12 20:00
试了,这个不调试能够正常运行,如果调试的话一直点单步调试到第九行会提示找不到文件,退出重进到第九行 ...

也就是说,这个程序
单步步入有问题,单步步过没问题?
#include<stdio.h>
#include<math.h>
int main()
{
    int i,j,k=2,l=1,sum=0;
    for(i=2;i<=10000;i++)
    {
      l=1;
      j=(int)sqrt(i);
      for(k=2;k<=j;k++)
      {
            if(i%k==0)
            {
                l=0;
                break;
            }
      }
      if(l)
      {
            sum=sum+1;
      }
    }
    printf("%d",sum);
}

而这个程序
单步步入和单步步过都没问题?
#include<stdio.h>
#include<math.h>
int main()
{
    int a,b;
    a=(int)sqrt(25);
    b=(int)sqrt(16);
    printf("25的平方根是%d\n",a);
    printf("16的平方根是%d\n",b);
}

bszs 发表于 2021-9-12 20:37:55

人造人 发表于 2021-9-12 20:09
也就是说,这个程序
单步步入有问题,单步步过没问题?



对的,我也不知道怎么回事

人造人 发表于 2021-9-12 22:50:56

bszs 发表于 2021-9-12 20:37
对的,我也不知道怎么回事

我也不知道怎么回事,^_^
我承认,我搞不定 vscode
vscode 太难用了,为什么这么多人用 vscode ?
不能理解,^_^

在我这边有时候也有那个找不到文件的提示,不知道怎么就出现了一次
还有是 我这边的 vscode 无法使用 printf 和 scanf 这类输入输出函数
没有输入输出的地方
我放弃了,^_^

bszs 发表于 2021-9-13 16:28:36

人造人 发表于 2021-9-12 22:50
我也不知道怎么回事,^_^
我承认,我搞不定 vscode
vscode 太难用了,为什么这么多人用 vscode ?


哦,那好吧,不过也没啥影响
页: [1]
查看完整版本: vscode调试出现问题