Visual Studio F5调试比附加到进程慢

5
如果我使用F5(调试)启动我的应用程序,某些操作需要大约2000毫秒。如果我使用F5 + CTRL(不带调试),并使用“附加到进程”将Visual Studio连接到进程,则仅需大约100毫秒。
有人知道是哪个组件会导致这种性能“问题”吗?
C#应用程序/VS 2012。
编辑:
代码段:
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
changed.Validate(context);
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);

你是自己触发操作的吗?你是如何启动它的? - Tyress
仅需点击一个按钮即可简单完成。 - Im4Ever
当调试器附加时,事情变慢是正常的并且可以预料到的。通常应用程序是在没有附加调试器的情况下使用的,因此“性能”是在没有调试器的情况下进行测量的。这是一个问题吗?我知道一些巨大的应用程序,在附加调试器时会变得非常缓慢,这可能会让人感到烦恼。 - Jeppe Stig Nielsen
1
它的第一位置很烦人。但我不明白F5(调试)和“附加到进程”之间有什么区别,两者都会附加调试器,但第一个要慢2000%。 - Im4Ever
Visual Studio的哪个版本?Express?Pro?Ultimate? - Erik Funkenbusch
但是附加到进程是在附加调试器。只是F5正在做一些不同的事情,但是是什么?! - Simon_Weaver
1个回答

1

有一件很重要的事情会产生很大的影响,就是在F5或调试期间,Visual Studio会加载所有pdb文件。pdb文件是程序数据库文件,也是您能够进行调试的原因。如果您以构建模式编译,则会看到bin文件夹中有与每个dll相对应的.pdb文件。

更多关于pdb文件的信息:http://msdn.microsoft.com/en-us/library/yd4f8bd1(vs.71).aspx

这个主题上的一篇文章http://blogs.msdn.com/b/zainnab/archive/2010/11/01/start-debugging-vs-start-without-debugging-vstipdebug0037.aspx


1
谢谢你的提示。我看到了这篇文章。但是pdb文件的负载只会在第一次加载时影响吗? “附加到进程”也会加载dps pdb文件。=> 在使用F5的情况下应该有相同的影响。 - Im4Ever
不仅仅是启动时间的问题。使用 F5 启动时,我会得到 20% 的持续 CPU 使用率,而使用“附加到进程”则为零。这是针对在 IIS 中运行的 .NET Framework 应用程序,即使我没有访问服务器也是如此。如果我运行应用程序,那么无论以哪种方式运行它,它都会停在断点处。这真的很糟糕! - Simon_Weaver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接