鱼C论坛

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

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

[复制链接]
发表于 2021-9-11 21:14:20 | 显示全部楼层 |阅读模式
10鱼币
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5.     int i,j,k=2,l=1,sum=0;
  6.     for(i=2;i<=10000;i++)
  7.     {
  8.         l=1;
  9.         j=(int)sqrt(i);
  10.         for(k=2;k<=j;k++)
  11.         {
  12.             if(i%k==0)
  13.             {
  14.                 l=0;
  15.                 break;
  16.             }
  17.         }
  18.         if(l)
  19.         {
  20.             sum=sum+1;
  21.         }
  22.     }
  23.     printf("%d",sum);
  24. }
复制代码

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

  3. int main()
  4. {
  5.         int a;
  6.         a = (int)sqrt(16);
  7.         printf("%d\n", a);
  8. }
复制代码

更让我蒙的是这段代码include<math.h>也引用了sqrt函数,但是正常运行和调试都没问题,请大佬帮我看看是vscode的问题还是我第一段代码写的有问题。
最佳答案
2021-9-11 21:14:21
sqrt 是库函数,当然没有源代码了
执行这些没有源代码的函数的时候要选 单步步过,不要选单步步入
就是不跟进这个函数里面去

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

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

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

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

最佳答案

查看完整内容

sqrt 是库函数,当然没有源代码了 执行这些没有源代码的函数的时候要选 单步步过,不要选单步步入 就是不跟进这个函数里面去
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

发表于 2021-9-11 21:17:10 | 显示全部楼层
可能是vc的问题吧
我devc++调试没问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

感觉是系统环境变量问题
我也不懂等大佬来看吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

不晓得 ,如果是vc的问题,我写的第二段代码按理说也有问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

明白了明白了,原来是这个原因,我还以为我vscode有问题呢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

还有一个问题,我试了下下面这段代码
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5.     int a,b;
  6.     a=(int)sqrt(25);
  7.     b=(int)sqrt(16);
  8.     printf("25的平方根是%d\n",a);
  9.     printf("16的平方根是%d\n",b);
  10. }
复制代码

调试的时候点的是单步调试没有点单步跳过也能得出结果,这是为什么呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

左边怎么那么多的断点,还有其他文件的
你重新创建一个项目,然后再试试上面的那个代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-12 19:19:25 | 显示全部楼层
人造人 发表于 2021-9-12 18:26
左边怎么那么多的断点,还有其他文件的
你重新创建一个项目,然后再试试上面的那个代码
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5.     int a,b;
  6.     a=(int)sqrt(25);
  7.     b=(int)sqrt(16);
  8.     printf("25的平方根是%d\n",a);
  9.     printf("16的平方根是%d\n",b);
  10. }
复制代码

还是这段代码,我把所有文件都关了又重开一个,只开一个断点,调试的时候是能够正常进行的

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

只开一个断点且只点单步调试
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-12 19:35:23 | 显示全部楼层
重新创建一个项目,调试这个程序试试
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5.     int i,j,k=2,l=1,sum=0;
  6.     for(i=2;i<=10000;i++)
  7.     {
  8.         l=1;
  9.         j=(int)sqrt(i);
  10.         for(k=2;k<=j;k++)
  11.         {
  12.             if(i%k==0)
  13.             {
  14.                 l=0;
  15.                 break;
  16.             }
  17.         }
  18.         if(l)
  19.         {
  20.             sum=sum+1;
  21.         }
  22.     }
  23.     printf("%d",sum);
  24. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

试了,这个不调试能够正常运行,如果调试的话一直点单步调试到第九行会提示找不到文件,退出重进到第九行时点击单步跳过又能正常执行
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

也就是说,这个程序
单步步入有问题,单步步过没问题?
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5.     int i,j,k=2,l=1,sum=0;
  6.     for(i=2;i<=10000;i++)
  7.     {
  8.         l=1;
  9.         j=(int)sqrt(i);
  10.         for(k=2;k<=j;k++)
  11.         {
  12.             if(i%k==0)
  13.             {
  14.                 l=0;
  15.                 break;
  16.             }
  17.         }
  18.         if(l)
  19.         {
  20.             sum=sum+1;
  21.         }
  22.     }
  23.     printf("%d",sum);
  24. }
复制代码


而这个程序
单步步入和单步步过都没问题?
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5.     int a,b;
  6.     a=(int)sqrt(25);
  7.     b=(int)sqrt(16);
  8.     printf("25的平方根是%d\n",a);
  9.     printf("16的平方根是%d\n",b);
  10. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

对的,我也不知道怎么回事
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

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

使用道具 举报

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

哦,那好吧,不过也没啥影响
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 18:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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