gpt4 book ai didi

.net - 如何在客户环境 .NET 上调试应用程序

转载 作者:行者123 更新时间:2023-12-01 20:26:28 25 4
gpt4 key购买 nike

我们有一个用 C# .NET 编写的应用程序,目前在生产环境中使用。显然使用的是发布版本。

不幸的是,有时应用程序在某些条件下会出现异常行为,而我们无法找出原因。我们无法在内部重现该问题。是的,更多的跟踪会有所帮助,但通常是在事后您才意识到应该进行更多的跟踪。

使用常规、逐行、Visual Studio 附加到进程类型调试来调试该安装的最佳方法是什么。是不是要在客户机器上安装VS的express版本,然后用debug版本替换dll?仅发送 PDB 和特定源文件就足够了吗?有没有更好的办法?最终目标是拥有一个类似开发的环境来调试问题。

最佳答案

远程调试是一个很好的功能,但它很少可以在生产环境中使用,因为它需要域(您自己的域和您的客户)之间的双向信任,而这是很难实现的(两家公司的管理员都会强烈反对这个想法)

参见Remote Debugging Across Domains

但是,通过您的应用程序发送 PDB 文件会有帮助。您可以要求您的客户使用 Clr Debugger (DbgCLR.exe),与 VS Debugger 相比,它有一些局限性,但它仍然是一个可以完成工作的调试器,并且它是 .NET SDK 的一部分。如果问题无法使用 Clr Debugger 进行调试,客户可以尝试在生产环境中安装 VS 的试用版,并为您提供远程桌面连接(如果管理员允许您这样做)。我想90天的试用期足以解决问题

您还可以尝试构建像您的客户那样的测试环境 - 限制(或增加)CPU、内存等数量以尽可能匹配物理条件。如果您认为某些其他第三方软件或不存在的注册表记录可能会影响您的程序,请要求您的客户创建其 Wi​​ndows 的虚拟镜像。

但是,我的经验是,.NET 中 50% 的此类“不可重现”错误是由于多个用户的并发访问(死锁、竞争条件、首胜/末胜场景中的逻辑错误行为)而发生的。在大多数情况下,即使您在客户计算机上安装了 VS(如果您在非高峰时间运行它),这些错误也无法调试,因为您需要同时在不同的计算机上运行至少 2 个客户。

因此,当您寻找为客户提供调试的选项时,请继续努力改进跟踪和监控功能。跟踪和性能计数器通常是生产环境中唯一的 friend 。

关于.net - 如何在客户环境 .NET 上调试应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1119870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com