VS 代码执行不同于代码文件

Posted

技术标签:

【中文标题】VS 代码执行不同于代码文件【英文标题】:VS Code Execution Different than Code File 【发布时间】:2009-03-12 04:33:56 【问题描述】:

有没有人在 Visual Studio 中进行过调试,并且它似乎执行的代码与单步执行的代码不同?有时它甚至会进入正在被单步执行的文件中看似空白的地方,但 VS 仍然在执行某些操作?

这种情况我已经发生过好几次了,有一次有人让我清除用户目录下的应用程序数据目录中的某些内容。但是我不记得那是什么,想知道是否有人有一些想法。

【问题讨论】:

下面标记答案的原因 3 做到了。由于某种原因,它似乎使用/创建不正确。吹走对象目录并繁荣,就像一个魅力。 【参考方案1】:

有四个最可能的原因。

原因 1:您实际上启动的不是编译结果,而是其他文件。要启动的可执行文件的路径在项目属性的“调试”页面上设置。

原因 2:您进行了优化。在这种情况下,编译器只保存代码行 - 为某些代码而不是其他代码编译代码信息。您会看到,在您按下“step over”后,您实际上会向前跳转多个语句,或者您无法访问某些变量值。关闭优化或从交互式调试切换到日志记录。

原因 3:程序数据库(存储代码行与编译代码绑定的 .pdb 文件)与编译文件不同步。 “重建”项目通常会有所帮助。

原因4:可执行文件所在文件夹中的程序数据库(见原因3)已过期,因为VS在每次编译时将程序数据库放在其他位置)。放置 .pdb 文件的路径在项目的链接器属性中设置。

【讨论】:

【参考方案2】:

如果您的代码正在优化(项目属性、构建、“优化代码”),那么正在运行的代码不一定与 IDE 中的代码匹配。这通常是由于尝试调试发布版本造成的。但是,在某些情况下并非如此。

【讨论】:

【参考方案3】:

您是否将调试器附加到正在运行的程序中?如果是这样,可能是您对源文件进行了更改,但忘记了编译代码。我偶尔会这样做,虽然很容易发现。

【讨论】:

以上是关于VS 代码执行不同于代码文件的主要内容,如果未能解决你的问题,请参考以下文章

Dart 语言在 VS 代码中不能执行

VS里正常的代码在QT里执行有问题?要怎么弄好QT的?

VS2017创建控制台应用后,编写完代码调试正常,使用exe文件直接执行出现闪退情况解决方法。

用VS2012如何执行C语言编写的程序?

Vs2015 当前不会命中断点,没有与此关联的可执行代码

C++ vs C源代码的编译和执行时间