草庐IT

DEBUGGING

全部标签

c# - 避免或接受中断编辑并继续的 C# 构造?

我开发和维护一个用C#2.0编写的大型(500k+LOC)WinForms应用程序。它是多用户的,目前部署在大约15台机器上。系统的开发正在进行中(可以被认为是永久测试版),并且几乎没有采取任何措施来保护用户免受每周构建中可能引入的潜在新错误的影响。出于这个原因,除其他外,我发现自己变得非常依赖调试器中的“编辑并继续”。它不仅有助于查找错误和修复错误,在某些情况下还有助于持续开发。我发现能够在正在运行的应用程序的上下文中执行新编写的代码非常有值(value)-无需重新编译并向新代码添加特定的入口点(必须添加虚拟菜单选项、按钮等)应用程序并记住在下一次生产构建之前删除它们)-一切都可以在

c# - 调试错误 "The Type ' xx' 在未引用的程序集中定义”

完整错误如下:Thetype'System.Windows.Forms.Control'isdefinedinanassemblythatisnotreferenced.Youmustaddareferencetoassembly'System.Windows.Forms,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089'.它指向不需要System.Windows.Forms的库项目的第一个类中的第一个语句(Debug.Assert行)(或者我认为如此).我知道如何解决它:添加提到的引用。但是我如何找出导致此

c# - 调试错误 "The Type ' xx' 在未引用的程序集中定义”

完整错误如下:Thetype'System.Windows.Forms.Control'isdefinedinanassemblythatisnotreferenced.Youmustaddareferencetoassembly'System.Windows.Forms,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089'.它指向不需要System.Windows.Forms的库项目的第一个类中的第一个语句(Debug.Assert行)(或者我认为如此).我知道如何解决它:添加提到的引用。但是我如何找出导致此

c# - 我可以在我的 C# 应用程序中获取所有线程的堆栈跟踪吗?

我正在调试我在工作中破解的一个大型应用程序中的一个明显的并发问题。有问题的错误只会在运行许多(12+)小时后出现在某些性能较低的机器上,而且我从未在调试器中重现过它。因此,我的调试工具基本上仅限于分析日志文件。C#可以轻松获取抛出异常的线程的堆栈跟踪,但我还想额外获取抛出异常时当前在我的AppDomain中执行的所有其他线程的堆栈跟踪。这可能吗? 最佳答案 CodePlex上有一个名为ManagedStackExplorer的工具(我相信起源于微软)。它使用调试和分析API来捕获正在运行的.Net应用程序中线程的堆栈跟踪,而无需修改

c# - 我可以在我的 C# 应用程序中获取所有线程的堆栈跟踪吗?

我正在调试我在工作中破解的一个大型应用程序中的一个明显的并发问题。有问题的错误只会在运行许多(12+)小时后出现在某些性能较低的机器上,而且我从未在调试器中重现过它。因此,我的调试工具基本上仅限于分析日志文件。C#可以轻松获取抛出异常的线程的堆栈跟踪,但我还想额外获取抛出异常时当前在我的AppDomain中执行的所有其他线程的堆栈跟踪。这可能吗? 最佳答案 CodePlex上有一个名为ManagedStackExplorer的工具(我相信起源于微软)。它使用调试和分析API来捕获正在运行的.Net应用程序中线程的堆栈跟踪,而无需修改

c# - 我应该将调试信息编译为 "full"还是 "pdb-only"的发布版本?

在C#项目的VisualStudio中,如果您转到“项目属性”>“构建”>“高级”>“调试信息”,您有三个选项:none、full或仅限pdb。哪个设置最适合发布版本?那么,full和pdb-only有什么区别?如果我使用full会有性能影响吗?如果我使用pdb-only是否会更难调试生产问题? 最佳答案 我会使用pdb-only进行构建。您将无法将调试器附加到已发布的产品,但如果您获得故障转储,则可以使用VisualStudio或WinDBG检查崩溃时的堆栈跟踪和内存转储。如果您使用full而不是pdb-only,您将获得相同的好

c# - 我应该将调试信息编译为 "full"还是 "pdb-only"的发布版本?

在C#项目的VisualStudio中,如果您转到“项目属性”>“构建”>“高级”>“调试信息”,您有三个选项:none、full或仅限pdb。哪个设置最适合发布版本?那么,full和pdb-only有什么区别?如果我使用full会有性能影响吗?如果我使用pdb-only是否会更难调试生产问题? 最佳答案 我会使用pdb-only进行构建。您将无法将调试器附加到已发布的产品,但如果您获得故障转储,则可以使用VisualStudio或WinDBG检查崩溃时的堆栈跟踪和内存转储。如果您使用full而不是pdb-only,您将获得相同的好

c# - Debug.Write 不工作

出于某种原因,Debug类突然停止为我工作。publicvoidWhyDebugIsNotWorking(){Debug.Write("WhyamInotworking!!!!!!");}在上面一行中,Debug.Write变暗(我认为Resharper正在调暗它),当我将光标放在它上面时,它说:Methodinvocationisskipped.Compilerwillnotgeneratemethodinvocationbecausethemethodisconditional,oritisapartialmethodwithoutimplementation.在我的案例中,以上条

c# - Debug.Write 不工作

出于某种原因,Debug类突然停止为我工作。publicvoidWhyDebugIsNotWorking(){Debug.Write("WhyamInotworking!!!!!!");}在上面一行中,Debug.Write变暗(我认为Resharper正在调暗它),当我将光标放在它上面时,它说:Methodinvocationisskipped.Compilerwillnotgeneratemethodinvocationbecausethemethodisconditional,oritisapartialmethodwithoutimplementation.在我的案例中,以上条

c# - 我在 JIT/CLR 中发现了一个错误 - 现在我该如何调试或重现它?

我有一个计算量大的多线程C#应用程序,它似乎在运行30-90分钟后一直崩溃。它给出的错误是Theruntimehasencounteredafatalerror.Theaddressoftheerrorwasat0xec37ebae,onthread0xbcc.Theerrorcodeis0xc0000005.ThiserrormaybeabugintheCLRorintheunsafeornon-verifiableportionsofusercode.CommonsourcesofthisbugincludeusermarshalingerrorsforCOM-interoporP