【问题标题】:Why is Visual Studio dropping me into a disassembly window when debugging?为什么 Visual Studio 在调试时将我放到反汇编窗口中?
【发布时间】:2011-08-19 11:45:51
【问题描述】:

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

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

我用语句更改了第 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 }

从这个函数返回后,控制传递到显示一些汇编代码的反汇编窗口。

为什么会这样?


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

我使用的是 Visual Studio 2008。我在构建/重建之前做了所有这些事情,比如清洁解决方案。但没有收获。

我知道 catch 中的行只有在 try 块失败时才会执行,但这里的情况不同(也很混乱)。它不是查看尝试失败还是成功,它只是查看行号。因为当第 26 行没有任何内容时,控制也将转到那里。

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

但我也很想知道这一点。

【问题讨论】:

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

标签: visual-studio debugging


【解决方案1】:

施韦塔,

第 24 行位于 catch 语句中,该语句仅在 try() 失败时执行。 try() 是否有可能成功,所以第 24 行永远不会执行?

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

当您发现问题时,请发布跟进。我很好奇!

祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 2011-04-13
    • 2011-03-07
    • 1970-01-01
    • 2012-07-01
    相关资源
    最近更新 更多