Tag: 调试

Debug类和Trace类有什么区别?

我试图在我们的一个应用程序中编写更好的error handling和调试逻辑。 有人可以解释Debug和Trace类之间的区别吗? 文档看起来非常相似。 我想将这些类与NLog结合使用以改进我们的调试工作。

为什么调试C#项目会显示C ++ / CLI符号?

我对一些C#库和控制台项目(但不是我从头创建的那些)有一个奇怪的问题,他们使用C ++ / CLI表示法显示手表和智能标签进行调试(例如,显示System::Object^在哪里我期望System.Object ): 我已经尝试更改项目guids,因为我认为这是问题(有些已经改变),删除obj / debug文件夹,重新启动Visual Studio 2010,修复Visual Studio 2010甚至旧的collections重新启动Windows。 是否有任何明显的设置我错过了以某种方式被启用?

Visual Studio:让调试器意识到函数不会导致“副作用”

我有一个对象,我必须通过观察窗口观看很多次的function输出。 问题是每次我都要按下刷新按钮,因为“这个表达会导致副作用,不会被评估” 。 有没有办法用[DoesNotCauseSideEffects]之类的东西来标记一个函数,这样每当我迈出一步时,手表会自动评估它? 我在VS2008或2010中编写C#。 编辑:该function看起来像这样,并且正如您所看到的那样,不会产生任何副作用。(x,y,z都是双打) public override string ToString() { return “{ ” + x.ToString(“.00”) + “, ” + y.ToString(“.00”) + “, ” + z.ToString(“.00”) + “}”; }

使用附加到进程的CLR调试器,.NET代码运行速度会变慢吗?

几乎所谓的标题:我正在运行一个很长的程序,它附加了CLR调试器,所以我可以捕获并检查exception。 我是否在没有调试器的情况下获得与运行它相当的性能,或者我付出了严重的(2-10倍或更多)惩罚?

Roslyn脚本:运行时exception的行号信息

我正在搞乱使用Roslyn脚本编写的东西(使用Microsoft.CodeAnalysis.CSharp.Scripting nuget包),我想知道是否有办法在脚本中发生exception的堆栈跟踪中添加行号信息。 当我运行以下C#代码时: // using Microsoft.CodeAnalysis.CSharp.Scripting; var code = @” var a = 0; var b = 1 / a; “; try { await CSharpScript.RunAsync(code); } catch (DivideByZeroException dbze) { Console.WriteLine(dbze.StackTrace); } 写入控制台的堆栈跟踪是: at Submission#0.<>d__0.MoveNext() — End of stack trace from previous location where exception was thrown — at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at […]

如何从托管代码项目中调试本机代码项目? C ++ / C#

如何从托管代码项目中调试本机代码项目? 我使用C#调用C ++代码,需要调试C ++代码。 否则,我必须退出项目,打开C ++项目,创建一个测试人员,然后调试代码。 这太可怕了。

调试outofmemoryexception

在我修复的一个小型ASP.NET / C#Web应用程序的错误修复中,我遇到了OutOfMemoryException。 没有关于在哪里查看的提示,因为这是编译时错误。 我该如何诊断此exception? 我假设这正是内存分析发挥作用的地方? 有小费吗? 谢谢

使用C#属性来跟踪函数调用,变量和返回值?

在Python中,我可以使用装饰器来跟踪函数调用,它的变量和返回值。 这是非常容易使用。 我只是想知道C#可以做同样的事情吗? 我发现在线有一个CallTracing属性的示例代码。 但是,它没有显示我预期的结果。 C#属性是否与python的装饰器具有相似的概念? 谢谢你和最诚挚的问候! [AttributeUsage(AttributeTargets.Method | AttributeTargets.ReturnValue | AttributeTargets.Property, AllowMultiple = false)] public class CallTracingAttribute : Attribute { public CallTracingAttribute() { try { StackTrace stackTrace = new StackTrace(); StackFrame stackFrame = stackTrace.GetFrame(1); Trace.TraceInformation(“{0}->{1} {2}:{3}”, stackFrame.GetMethod().ReflectedType.Name, stackFrame.GetMethod().Name, stackFrame.GetFileName(), stackFrame.GetFileLineNumber()); Debug.WriteLine(string.Format(“{0}->{1} {2}:{3}”, stackFrame.GetMethod().ReflectedType.Name, stackFrame.GetMethod().Name, stackFrame.GetFileName(), stackFrame.GetFileLineNumber())); } catch { } } } class Program […]

VS 2008 Addon暂时禁用/删除所有catch块

是否有任何插件可以暂时禁用所有catch块。 我正在维护一个应用程序,我需要找出它究竟在哪里抛出exception。 有人做过error handling就是所有层都让我的工作变得艰难:(

调试返回值

我记得当我在Visual Studio 6.0中调试 C ++代码时,我可以看到方法的返回值 。 现在,我在Visual Studio 2010中缺少C#的function。 我在哪里可以看到返回值,或者有没有显示它的原因? Edit1:一个例子: string GetFullName() { return GetFirstName() + ” ” + GetLastName(); } 当我从返回到下一行的行开始步骤(调试器)时,我希望在调试变量窗口中看到全名。