当前位置:数据分析 > 为什么在vs2019中无法调试_关于使用VS2019时调试错误的问题

为什么在vs2019中无法调试_关于使用VS2019时调试错误的问题

  • 发布:2023-10-07 13:17

目录

1。 VS2019常见问题解答

1。 scanf问题

2。如何在当前页面创建新项目以及创建多个项目后无法运行当前项目的问题

2。 VS2019的调试功能(无断点)

3。 VS2019的调试功能(断点)

? ??? ??

4。总结

1。 VS2019常见问题解答

1。 scanf问题

?

?

? ? ? ?很多朋友在使用VS2019的时候用一条scanf语句写了很简单的代码,但是编译器给你报错,无法正常运行。下面教大家在VS2019中使用scanf的三种方法解决问题:

1。将 scanf 更改为 scanf_s。这是VS编译的一系列问题。它不是正式的C语言写法。这只是微软在VS中为了提高输入安全性而添加的一个新功能。那么这个函数和scanf函数有什么区别呢?这是一个例子。我们使用的scanf语句的格式是scanf("%s",&a);这里所有从键盘输入的字符都会被赋值给变量a的地址,但是如果我们想限制用户输入的字符串长度,这样的输入法显然是不安全的。 scanf_s语句的正式格式为scanf_s("%d",&a,10);这意味着我们限制用户输入字符串的长度,最多为 9 个字符。最后一个字符是一个字符。字符串终止符‘\0’(编译器会自动添加它)的意思是,当用户输入的字符串大于9个字符,超过我们指定的输入字符串的长度时,这条语句的返回值就会变成0,相当于返回0;也就是说程序到这里就结束了,下面的语句不会被执行

2。点击编译器上方菜单中的项目,点击框下方的项目属性,在C/C++一栏找到General,找到右侧的SDL检查,将“Yes”改为“No”

?

3。我们找到了程序报错的语句

点击下面的输出并复制下图中所选的句子

然后在程序顶部添加这个宏定义,如下图?

如果下面仍然报错(可能是网速问题),可以点击重新生成,如下图

2。如何在当前页面创建新项目以及创建多个项目后无法运行当前项目的问题

? ? ? ?有些朋友不知道如何在当前项目下新建一个项目,就傻乎乎地重新进入编译器,然后按照上一期的教程新建一个大项目。这并非不可能,但这是浪费时间。而且查找也不方便。您可以在一个大项目中创建多个相关项目。例如,如果我创建一个名为“数据结构”的大项目,那么在这个大项目中我可以创建链表、队列、堆栈、树、图等。数据结构等小项目用于测试或开发。这就像整理衣柜一样。把所有东西都放在它应该在的地方。不要把它到处放。你要做一个干净的宝宝。接下来教大家如何在大项目中新建一个小项目以及如何运行项目

1。我们双击项目上方的解决方案,选择Add->New Project,如图

2。然后我们回到熟悉的界面。具体操作上一期已经讲解过,这里不再重复

?

?3。直接跳转到新项目添加代码的链接

注:很多朋友看到这里会很兴奋,因为他们知道如何创建小项目(大项目中的小项目互不干扰),一按ctrl+F5就会一头雾水,因为这里运行程序还是上面的程序,解决办法如下:

4。双击新建项,在弹出菜单中找到设置为启动项

?

然后编译器会运行新的工程(编译器当前运行的工程的工程名字体要稍微粗一些)?

2。 VS2019的调试功能(无断点)

? ? ?作为一个合格的程序员,如果你不知道如何调试,那就太可笑了。下面的内容我会教大家如何调试(注:我喜欢用快捷键,记不住了,朋友们可以找到上面的菜单)

?

1。在使用快捷键开始调试之前,一定要关闭功能键f1到f12的功能(可以按fn键或者直接在开始菜单中设置)

2。 (这里我用之前写的书本顺序来演示,看不懂也没关系,知道流程就行。)按f10开始编译

我们在第134行看到一个小箭头,这表明我们的程序从这里开始执行

2。我们可以继续按f10或者按f11。 f10 按进程执行,f11 按语句执行。 process by process简单理解就是会按照你main函数中的语句一步步执行,不会跳转。转到某个语句中出现的函数。如果你觉得前面的代码一定没问题的话,可以按f10来节省时间。到了可能出现问题的地方按f11逐条执行

例如,这个main函数中的语句是创建一个序列表。如果我在这里按f11,就会跳转到创建序列表的功能。按 f10 不会执行此操作

3。调试过程中,可以盯着控制台窗口(注意光标一定要有焦点,否则按下去没有反应)和下面的自动窗口,可以看到写入的值和地址以及打印的内容值或效果。有什么问题吗

?

发现问题后,我们可以按shift+F5停止调试,修改我们的代码

3。 VS2019的调试功能(断点)

? ? ? ?当我们想要节省时间或者验证某个过程是否有问题时,我们可以使用断点来调试。我在这里做一个简单的演示

1。击中一个或多个断点

2。按f5开始调试(按f5将从程序遇到第一个断点的地方开始执行,按f10从main函数的第一条语句开始执行)

如上图,按f5从第一个断点开始运行

2。接下来逐条执行,按f11,密切关注控制台和内存地址的值的变化(底部自动输出窗口)?

? ?? ??

发现错误后,按shift+F5停止调试,然后修改代码

?由于这是我之前写的代码,所以没有错误(呵呵)。我无法向您展示调试过程中的错误情况。反正这个东西多几次你就会习惯的。最主要的是自己做。

4。总结

? ? ? VS2019作为最先进的C语言和C++编译器,功能非常强大,可以完成很多其他编译器无法完成的任务。开始使用这个编译器对您来说是一个巨大的飞跃。它的大部分功能我们可能不知道如何使用,但是作为一个合格的C/C++程序员,我们必须了解上面的基本错误和调试功能。欢迎点赞、评论、关注

如下图所示,c++工程处于RelWithDegInfo模式(无法调试),无法进入断点。

网上给出的解决方案主要有以下两种:

1。删除project.vs目录并重新生成项目。

(44条)VS2019无法调试问题的解决方法_成为宇航员的博客-CSDN博客_VS2019无法调试

2。工具-选项-调试-常规-要求源文件始终与原始文件匹配,取消勾选。

(44条消息)C# Winform程序无法调试(vs2019)_寻墨博客-CSDN博客_vs2019无法调试?

-------------------------------------------------------- --- -------------------------------------

这两个对于我遇到的情况来说都没用。我的原因是安装了文档安全系统后源文件被加密了,如下图所示。 (重装系统后找到了)

?

两种方法:

一:

通过百度,我也查到了这个问题出现在哪里。原因是我在一个项目中创建了两个源文件,并调用了main函数(一个项目中可以有多个源文件,但多个源文件只能调用一个main函数),所以会报错。因此,您只需修改不需要调试的源文件的属性即可。

具体操作如下:

1。右键不需要调试的源文件,点击属性

2。单击“从生成中排除”右侧的倒三角形,选择“是”,然后单击“应用”和“确定”。

设置完成后,源文件将如下所示。

然后去调试你要调试的源文件。

二:

直接注释掉其他不需要调试的源文件中的main函数。

反思:没有思考问题的根源,治标不治本。

相关文章