2

有没有人在 Visual Studio 中调试过,它似乎执行的代码与正在逐步执行的代码不同?有时它甚至会进入正在被单步执行的文件中看似空白的地方,但 VS 无论如何都在执行某些东西?

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

4

3 回答 3

2

有四个最可能的原因。

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

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

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

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

于 2009-03-12T05:02:12.957 回答
1

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

于 2009-03-12T04:58:32.170 回答
1

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

于 2009-03-12T06:34:12.843 回答