鱼C论坛

 找回密码
 立即注册
查看: 1551|回复: 15

[已解决]vscode调试出现问题

[复制链接]
发表于 2021-9-11 21:14:20 | 显示全部楼层 |阅读模式
10鱼币
#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 是库函数,当然没有源代码了
执行这些没有源代码的函数的时候要选 单步步过,不要选单步步入
就是不跟进这个函数里面去

这是没有调试正常运行时,能够正常得出结果

这是没有调试正常运行时,能够正常得出结果

这是同样的代码进行调试时运行到第九行sqrt时提示说无法读取文件

这是同样的代码进行调试时运行到第九行sqrt时提示说无法读取文件

最佳答案

查看完整内容

sqrt 是库函数,当然没有源代码了 执行这些没有源代码的函数的时候要选 单步步过,不要选单步步入 就是不跟进这个函数里面去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-11 21:14:21 | 显示全部楼层    本楼为最佳答案   
sqrt 是库函数,当然没有源代码了
执行这些没有源代码的函数的时候要选 单步步过,不要选单步步入
就是不跟进这个函数里面去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-11 21:17:10 | 显示全部楼层
可能是vc的问题吧
我devc++调试没问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-11 21:18:19 | 显示全部楼层
我又试了一下break和continue课后作业里求素数的答案,发现都是一样的问题,调试不成功正常运行可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

感觉是系统环境变量问题
我也不懂等大佬来看吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-11 22:07:15 | 显示全部楼层
大马强 发表于 2021-9-11 21:27
感觉是系统环境变量问题
我也不懂等大佬来看吧

不晓得 ,如果是vc的问题,我写的第二段代码按理说也有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-12 00:38:47 | 显示全部楼层
人造人 发表于 2021-9-11 23:38
sqrt 是库函数,当然没有源代码了
执行这些没有源代码的函数的时候要选 单步步过,不要选单步步入
就是不 ...

明白了明白了,原来是这个原因,我还以为我vscode有问题呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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);
}
调试的时候点的是单步调试没有点单步跳过也能得出结果,这是为什么呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-12 18:26:42 | 显示全部楼层
bszs 发表于 2021-9-12 14:16
还有一个问题,我试了下下面这段代码

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

左边怎么那么多的断点,还有其他文件的
你重新创建一个项目,然后再试试上面的那个代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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);
}
还是这段代码,我把所有文件都关了又重开一个,只开一个断点,调试的时候是能够正常进行的

只开一个断点且只点单步调试

只开一个断点且只点单步调试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-12 20:00:04 | 显示全部楼层
人造人 发表于 2021-9-12 19:35
重新创建一个项目,调试这个程序试试

试了,这个不调试能够正常运行,如果调试的话一直点单步调试到第九行会提示找不到文件,退出重进到第九行时点击单步跳过又能正常执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-12 20:37:55 | 显示全部楼层
人造人 发表于 2021-9-12 20:09
也就是说,这个程序
单步步入有问题,单步步过没问题?

对的,我也不知道怎么回事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-12 22:50:56 | 显示全部楼层
bszs 发表于 2021-9-12 20:37
对的,我也不知道怎么回事

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

在我这边有时候也有那个找不到文件的提示,不知道怎么就出现了一次
还有是 我这边的 vscode 无法使用 printf 和 scanf 这类输入输出函数
没有输入输出的地方
我放弃了,^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-13 16:28:36 | 显示全部楼层
人造人 发表于 2021-9-12 22:50
我也不知道怎么回事,^_^
我承认,我搞不定 vscode
vscode 太难用了,为什么这么多人用 vscode ?

哦,那好吧,不过也没啥影响
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 06:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表