Visual Studio“开始调试”与“附加到进程”

时间:2009-05-12 18:25:19

标签: .net vb.net visual-studio debugging

我有一个使用.Net 2.0 Framework的客户端/服务器应用程序。我正在使用Visual Studio 2008来构建和管理代码。

当我只是通过启动.exe运行应用程序的Debug或Release版本时,我在数据库上获得一个插入语句,试图为表的外键插入“0”,从而触发错误,因为另一个表的主键不是0.

当我按下play buttton(“Start Debugging”)运行应用程序时,insert语句使用正确的外键。

在第一种情况下,即使我在调试版本启动后“附加到进程”,也会发生这种情况。


我的问题:在启动应用程序并从调试器启动应用程序后,附加到应用程序的调试版本之间的区别是什么?

3 个答案:

答案 0 :(得分:4)

如果您“开始调试”,则会在vshost.exe hosting process下运行。这将回收AppDomain创建,允许您调试部分信任应用程序,并可以沙盒ClickOnce应用程序。

这些功能都不是导致你的bug的原因(而vshost对大多数人来说并不是什么大问题) - 所以我认为这可能是一个红色的鲱鱼。

您可能应该关注与获取FK值相关的多线程和计时问题。

答案 1 :(得分:1)

没有更多细节,很难说。然而,为了避免一个不足的猜测,我敢打赌你会看到一个时间问题(竞争条件或一些这样的)。无论出于何种原因,您的服务器(我认为)在“正常”启动时会获得虚假数据。通过IDE /调试器启动它会导致延迟,允许客户端进程(再次,假设)时间将正确的数据提供给服务器。

答案 2 :(得分:0)

我知道这听起来很愚蠢,但一个好主意是检查你是否有正确的参数,很容易忘记我们将它们添加到调试器但不释放。

相关问题