如何在内部应用程序中使用DebugDiag?我需要做什么(包括obj文件、程序集链接等) 最佳答案 Debugdiag分析需要符号(默认情况下,Microsoft公共(public)符号服务器已经配置了Debugdiag)。所有下载的微软公共(public)符号都将放在“c:\symcache”如果您有内部应用程序,并且有符号,那么您只需将PDB文件(仅)添加到符号路径:“c:\symcache”在调试的时候,如果是设置断点,那么还需要在相应的路径中添加符号。“c:\symcache”
我们正在努力将一个步骤集成到我们的持续集成(CI)服务器(CruiseControl.NET)中。我们希望将构建过程中生成的调试符号*.pdb注册到Microsoft符号服务器中。正如Microsoft所实现的那样,符号服务器是VisualStudio用于查找C++/C#可执行文件的*.pdb调试符号的目录结构。Microsoft提供了一个命令symstore,它在一个目录中获取调试符号,并根据需要填充中央符号存储目录。问题是symstore明确指出并发运行是不安全的。我们可以尝试哪些方法或策略来禁止通过BATCH或Powershell脚本并发执行symstore命令?我们的方法很灵活
所以我真的很难弄明白。我有几个项目的解决方案,比如A、B和C。A引用并使用B和C(均为项目引用)。我想从A创建一个Nuget包,我成功地做到了,尽管我不得不跳几圈,使用这样的东西:...WithMetadataValue('ReferenceSourceTarget','ProjectReference')->WithMetadataValue('PrivateAssets','All'))"/>但是,我还想通过我的Nuget包进行调试,所以我找到了一些技巧来进行调试。一种方法是将pdb复制到nupkg中,尽管不推荐这样做。它应该与这个lineinyourcsprojfile一起使用.
我已经开始像这样使用定义类了:internalsealedclassDefines{//////ThisconstantissettotrueiffthedefineDEBUGisset.///publicconstboolDebug=#ifDEBUGtrue;#elsefalse;#endif}我看到的优点是:确保我不会破坏编译器不会检查的#if..#else..#endif内容。我可以查找引用以查看它的使用位置。拥有一个用于调试的bool值通常很有用,定义代码更长/更困惑。我看到的可能的缺点:如果Defines类在另一个程序集中,编译器无法优化未使用的代码。这就是我制作内部的原因。
是否有必要在#if(DEBUG)预处理器指令中包装对Debugger.Log()的调用以优化代码,或者C#编译器是否会在构建RELEASE配置时仍然生成优化代码? 最佳答案 在RELEASE模式下,this调用没有任何类型的优化。调用出现在IL中。唯一的区别是如果没有DEBUGGER则它没有任何效果。来自文档Debugger.Log:Ifthereisnodebuggerattached,thismethodhasnoeffect.我建议衡量您应用的性能,然后选择要遵循的步骤。如果没有显着差异(从您的应用的角度来看),我会保留该日志
我正在尝试从nativeC++可执行文件调试C#dll。我有一个C#COM对象,它通过IDispatch从native代码加载和运行。一切都在调试中构建,包括C#和C++代码。虽然我可以看到所有的c++代码,并且所有的c++dll都加载了它们的符号并可用于调试、断点等,但C#代码拒绝播放。我看到的是C#dll都拒绝加载它们的符号pdb,并在模块窗口中报告“skippedloadingsymbolsforngenbinary”。顺便说一句,我在这里调试C#解决方案,我在COM项目的调试设置中将native可执行文件设置为“启动外部程序”。现在我可以启动C++可执行文件,然后附加到它,然后
考虑以下C#程序:usingSystem;usingSystem.Diagnostics;namespaceTest{classMainClass{publicstaticvoidMain(string[]args){Debug.Assert(false);Debug.Fail("fail!");Console.WriteLine("HelloWorld!");}}}编译时使用:dmcs-debug-d:DEBUGMain.cs然后运行它:mono--debugMain.exe断言和失败似乎被忽略了。输出只是:HelloWorld!我在StackOverflow上查看了其他相关问题,但
我是一名C#程序员,最近我安装了VisualStudio2013。问题是当我设置断点或遇到错误并尝试在调试时编辑代码时出现此错误但我找不到在Google上搜索同样的错误。Changesarenotallowedforthismoduleasitwasnotbuiltforchangeswhiledebuggingorthetarget.NETruntimeversiondoesnotsupportit我还尝试检查Tools->Options->Debugging->EditandContinue上的选项,但没有帮助。知道问题出在哪里吗? 最佳答案
我想知道是否应该在调用其他Debug和Debugger函数之前调用if(Debugger.IsAttached)?if(Debugger.IsAttached){Debugger.Break();}对比Debugger.Break()//WithoutcheckingifDebuggerisactuallyattached 最佳答案 这取决于您调用Break()方法的原因。根据documentation:Ifnodebuggerisattached,usersareaskediftheywanttoattachadebugger.如
我准备好麦康奈尔的“CodeComplete”已经有一段时间了。现在我在Hunt&Thomas的“ThePragmaticProgrammer”中再次阅读它:使用断言!注意:不是单元测试断言,我的意思是Debug.Assert()。遵循SO问题WhenshouldIuseDebug.Assert()?和Whentouseassertionoverexceptionsindomainclasses断言对开发很有用,因为可以很快找到“不可能”的情况。而且它们似乎很常用。据我了解,断言在C#中通常用于检查输入变量的“不可能”值。为了使单元测试尽可能简洁和独立,我使用null和“不可能的”虚拟