Visual studio 为什么Visual Studio在调试时将我放入反汇编窗口?

Visual studio 为什么Visual Studio在调试时将我放入反汇编窗口?,visual-studio,debugging,Visual Studio,Debugging,我在调试程序时遇到了一个奇怪的问题 我开发了一个运行良好的程序。即使我在代码的一部分做了一个小改动(添加了一个硬编码语句,而不是监视变量并更改其值),它仍然可以正常工作。但后来我删除了这些更改,从那时起,程序的行为非常奇怪。硬编码的变量仍然保留硬编码的值,而不是它根据流应该具有的值 我用声明更改了第24行 return "shweta@2k7.com"; 然后再次恢复更改,使其与前一个类似,只是我删除了一个空行。因此,当前代码中的行总数比上一个代码少1行,如下所示 现在,当我调试它时,控件会上

我在调试程序时遇到了一个奇怪的问题

我开发了一个运行良好的程序。即使我在代码的一部分做了一个小改动(添加了一个硬编码语句,而不是监视变量并更改其值),它仍然可以正常工作。但后来我删除了这些更改,从那时起,程序的行为非常奇怪。硬编码的变量仍然保留硬编码的值,而不是它根据流应该具有的值

我用声明更改了第24行

return "shweta@2k7.com";
然后再次恢复更改,使其与前一个类似,只是我删除了一个空行。因此,当前代码中的行总数比上一个代码少1行,如下所示

现在,当我调试它时,控件会上升到第26行,即使那里没有写入任何内容,并且它会返回上一个值“shweta@2k7.com“(在《守则》中不出现的),而不是”

当前代码:

 1 public string GetUserEmail(string userName)
 2 {
 3
 4    if (!UserExists(userName)) return "";
 5    try
 6    {
 7      DirectorySearcher search = new DirectorySearcher(_directoryEntry);
 8      search.Filter = "(SAMAccountName=" + userName + ")";
 9      search.PropertiesToLoad.Add("mail");
 .       .
 .       .
 .       .
19    }
21    catch
22    {
23      return "";  //"username@domain.com";
24    }
25  }
以前的代码

 1 public string GetUserEmail(string userName)
 2 {
 3   if (!UserExists(userName)) return "";
 4   try
 5   {
 6     DirectorySearcher search = new DirectorySearcher(_directoryEntry);
 7     search.Filter = "(SAMAccountName=" + userName + ")";
 8     search.PropertiesToLoad.Add("mail");
 .      .
 .      .
 .      .
18   }
22   catch
23   {
24     return "username@domain.com";      //line number 24
25   }
26 }
从该功能返回后,控制传递到反汇编窗口,其中显示一些汇编代码

为什么会这样


是的,您是正确的,它正在运行旧版本

我正在使用VisualStudio2008。在构建/重建之前,我做了所有这些事情,比如清洁溶液。但没有收获

我知道catch中的行只有在try块失败时才会执行,但这里的场景不同(也令人困惑)。它不是看尝试是否失败或成功,它只是看行号。因为当第26行中没有任何内容时,控制也会转到那里

我尝试删除26处的空行,然后控制转到第27行(删除空行后为26)。知道第27行有评论,你会感到惊讶!! 不过,我已经从SVN签出了最后一个安全版本,而且效果很好

但我也很想知道这件事。

Shweta

第24行在
catch
语句中,只有当
try()
失败时才会执行该语句。
try()
是否可能成功,因此第24行永远不会执行

再想一想,这听起来像是一个不运行您认为正在运行的代码的案例:是否有可能您的新源代码没有正确编译,所以您仍然在运行旧版本?如果您使用的是IDE(或好的生成文件),您可以尝试运行
clean
,或者手动删除对象和可执行文件,然后从头开始重建

当您发现问题时,请发布后续信息。我很好奇


祝您好运。

您的更新让我更加确信某些东西(符号表,也许还有更多)没有得到重建,因为对源代码的更改没有反映在调试器中。