【问题标题】:Visual Studio "Start Debugging" vs. "Attach to Process"Visual Studio“开始调试”与“附加到进程”
【发布时间】:2009-05-12 18:25:18
【问题描述】:

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

当我通过启动 .exe 来运行应用程序的调试或发布版本时,我在数据库上收到一条插入语句,该语句试图为表的外键插入“0”,从而触发错误,因为另一张表的主键不是0。

当我通过点击播放按钮(“开始调试”)运行应用程序时,插入语句使用正确的外键。

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


我的问题:在应用程序启动后附加到应用程序的调试版本和从调试器启动应用程序有什么区别?

【问题讨论】:

  • 我会说用 Console.ReadLine() 启动你的程序,让你有时间附加调试器,然后看看那个版本有什么问题。此外,请尝试通过删除调试和发布目录并重新构建整个项目来进行彻底清理,以确保没有版本控制问题。
  • 感谢您迄今为止的建议。我会尝试其中一些,看看我能得到什么。

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    没有更多细节,很难说。但是,为了冒险进行不充分的猜测,我敢打赌您会看到时间问题(比赛条件或类似情况)。无论出于何种原因,您的服务器(我想)在“正常”启动时都会收到虚假数据。通过 IDE/调试器启动它会导致延迟,从而允许客户端进程(再次假设)有时间将正确的数据发送到服务器。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 2020-12-18
        • 1970-01-01
        • 2014-08-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多