jjzjj

postmortem-debugging

全部标签

c# - 我应该在 Debugger.Break 或 Debug.WriteLine 之前检查 Debugger.IsAttached 吗?

我想知道是否应该在调用其他Debug和Debugger函数之前调用if(Debugger.IsAttached)?if(Debugger.IsAttached){Debugger.Break();}对比Debugger.Break()//WithoutcheckingifDebuggerisactuallyattached 最佳答案 这取决于您调用Break()方法的原因。根据documentation:Ifnodebuggerisattached,usersareaskediftheywanttoattachadebugger.如

c# - 单元测试是否使 Debug.Assert() 变得不必要?

我准备好麦康奈尔的“CodeComplete”已经有一段时间了。现在我在Hunt&Thomas的“ThePragmaticProgrammer”中再次阅读它:使用断言!注意:不是单元测试断言,我的意思是Debug.Assert()。遵循SO问题WhenshouldIuseDebug.Assert()?和Whentouseassertionoverexceptionsindomainclasses断言对开发很有用,因为可以很快找到“不可能”的情况。而且它们似乎很常用。据我了解,断言在C#中通常用于检查输入变量的“不可能”值。为了使单元测试尽可能简洁和独立,我使用null和“不可能的”虚拟

c# - 'Debug.Assert' 语句在 Mono 中不起作用

我这里有这个程序:namespaceTodoPlus{usingSystem.Diagnostics;publicclassLameProg{publicLameProg(){}publicstaticvoidMain(string[]args){inta=2;intb=3;Debug.Assert(a==b,"Bleh");System.Console.WriteLine("Haha,itdidn'twork");}}}不知何故,Debug.Assert不工作。我正在使用Mono2.10.5,这是我用来编译和执行的:dmcsLameProg.csmono./LameProg.exe我

c# - Debug vs Release in optimization of .net(分发给用户时的顾虑)

向公众分发Debug与Release构建是否存在任何安全或性能问题?大多数时候我只是将.exe文件打包到Debug文件夹中(连同所需的依赖项)并将其提供给用户。有什么理由比另一个更喜欢分发吗? 最佳答案 是的,当然有-安全和性能方面的影响。调试版本比发布版本包含更多信息,并且许多编译器优化已针对调试版本关闭。另见Debug/Releasedifference在这里。Arethereanyreasontopreferonemorethantheothertobedistributed?是的。如果您想拥有一个经过优化编译的更快的二进制文

c# - WPF DotNET 应用程序将在 Debug模式下运行,但 .EXE 将不会运行

我使用VS2010在C#中编写了一个WPF应用程序。该应用程序可以使用VisualStudio在Debug模式下正常运行,但是当我从bin\release文件夹运行.EXE时,没有任何反应。我没有从Windows收到任何错误消息,VS中也没有错误或警告。我曾尝试构建、重建和清理解决方案(以各种可能的顺序),但没有成功。我的解决方案包含2个项目,它们都使用.NET4.0框架,我的PC上安装了.NET4.0。我在XP和Win7上都试过了,但仍然没有。我还刚刚注意到,当我在Debug模式下运行应用程序时,Debug的输出显示:在加载每个.Dll后“无法找到或打开PDB文件”。我每次都编译到R

c# - 如何在 C# 中使用 Console.Log、Print_R()、Debug.Trace?

PHP有一个名为print_r()和var_dump()的函数,可以显示项目的所有内容。这使得弄清楚事物是什么变得非常容易。在C#中有类似的东西吗?我知道C#中有一个Console.WriteLine("Hello");,但这在MVC中有效吗?我可以在运行应用程序时像flash那样在调试控制台中执行某种类型的debug.trace()吗? 最佳答案 System.Diagnostics.Debug.WriteLine("blah");为了显示对象中的所有变量,您必须覆盖其ToString()方法或编写一个方法来返回您需要的所有对象信

c# - 在 Debug模式下跳过 While 循环

场景如下:我在要调试的方法的开头放置了一个断点...首先假设此方法中有第1部分,我想进入/跳过某些代码。..很好......在那之后有一个While循环,我不想进入/跳过它,我只想告诉调试器嘿,你自己运行这个循环10次,然后让我转到第2部分我的代码在此While循环之后开始,是否可以使用调试选项执行此操作?所以像这样:BreakPoint:MyMethod{PartOneofthecode:Ok,letsdebugitWhileLoop:Idonotcare,DonotwanttodebugitPartTwoofthecode:Yes,Iwanttodebugittoo}

c# - 在 Debug 中使用 Project Reference,在 Release 中使用 Nuget

我想同时在我的项目(A)和依赖的Nuget包(B)中工作,而不需要在每次更改时都发布nuget包。是否可以在构建调试时从解决方案(A)中引用Nuget项目(B)。在构建Release时使用Source中的Nuget包? 最佳答案 一种方法是手动编辑csproj文件。如果您当前已经引用了NuGet包,那么您将在csproj文件中拥有这样的部分:......\packages\log4net.2.0.8\lib\net45-full\log4net.dllTrue....在这个例子中,使用了log4net。对于您的NuGet包,公钥to

c# - System.Diagnostics.Debugger.Debug() 停止工作

我正在开发一个程序,该程序使用System.Diagnostics.Debugger.Break()方法允许用户从命令行设置断点。这已经运行了好几个星期了。然而,当我今天修复一个单元测试时,我尝试从命令行使用调试开关,但它没有用。这是我尝试过的:我已经确认确实调用了Debug()方法(通过在它后面放置一个System.Console.WriteLine())我已确认构建仍在调试中我已经完成了一个干净的构建我已重新启动ProductStudioGoogle快速搜索没有显示任何内容,.Net的API文档也没有提及此功能未正确执行的任何内容。那么...有什么想法吗?

c# - 将开发快捷方式放在#if DEBUG block 中是个坏主意吗?

在我们代码的一些地方,我们使用#ifDEBUGblock来简化开发。像这样的东西:#ifDEBUGserverIP=localhost;#elseserverIP=GetSetting()#endif或privateboolisLicensed()#ifDEBUGreturntrue;#endifreturnCheckSetting()还有一些地方我们会像这样进行外观更改:#ifDEBUGbackground=humorousImage.jpg#elsebackground=standardColor#endif依赖#ifdebug来简化开发是否危险?如果是,#ifdebug的有效用法