VS2015包含一些用于诊断WPF应用程序性能的新工具.我的解决方案包含多个项目(例如View和ViewModel项目).当我在诊断模式下启动View项目并测量CPU使用率时,VM项目正在使用相当大一部分,在结果中显示为"外部代码".在诊断时,如何告诉诊断工具包括我的解决方案的所有项目.
(注意跳过评论的人)
我知道"过滤视图"下拉列表中提供的"外部代码"复选框.该选项的问题在于,如果我打开它,它也开始在调用堆栈中显示较低级别的Framework函数(如nt.dll,presentationcore.dll等),这意味着我的VM的一个函数可能会被埋没调用层次结构深入20级.我需要一种方法来要求它过滤任何框架级函数,只显示当前解决方案中的代码.
我有一个ASP.NET MVC网站,每天在Server Intellect的共享主机平台上获得大约6500次点击.我一直在日志中看到app重启,我无法弄清楚原因.
我在这里阅读了Scott Gu的文章:http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx 并实现了这项技术,以下是我日志中显示的内容:
Application Shutdown:
_shutDownMessage=HostingEnvironment initiated shutdown
HostingEnvironment caused shutdown
_shutDownStack=at
System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at
System.Environment.get_StackTrace() at
System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal() at
System.Web.Hosting.HostingEnvironment.InitiateShutdown() at
System.Web.Hosting.PipelineRuntime.StopProcessing()
Run Code Online (Sandbox Code Playgroud)
它似乎每五分钟发生一次.
有没有其他方法来调试这个?
更新:以下是Softion提到的应用程序池设置:
中央处理器
过程模型
快速失败保护
回收
我知道#pragma clang diagnostics可以用来忽略clang生成的一些警告.但我不知道如何正确使用它.
例如,对于未使用的变量警告,我们可以避免警告
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-variable"
int number;
#pragma clang diagnostic pop
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何为#pragma clang诊断忽略得到正确的参数(这里是"-Wunused-variable")
有没有办法用xcode为特定警告提供这种警告名称?
我一定有笨手笨脚的东西才能将其关闭,但是当我尝试在调试模式下运行任何 C# 项目(.net 6 windows wpf,甚至只是命令行应用程序)时,我不再看到该窗口Diagnostic Tools
。这是显示内存消耗和其他内容的实时图表的东西。
我一直在尝试重新启用Diagnostic Tools
,但到目前为止还无法做到。我可以在调试模式下运行,其他一切看起来都正常,我可以添加断点等。可能出了什么问题?
这实在是太令人费解了!
查看文档(调试时测量性能),它说......
除非您将其关闭,否则诊断工具窗口会自动出现。要打开该窗口,请单击“调试”/“Windows”/“显示诊断工具”(或按 Ctrl + Alt + F2)。
这是我尝试过的:
ctrl + alt + f2
什么也没做。
在 Visual Studio 中转到菜单栏:Debug/Windows,没有“显示诊断工具”项目。
Diagnostic Tools
,它为我提供了“调试”>“常规”的链接,但选项对话框中没有“调试时启用诊断工具”复选框。当然,我也尝试过关闭/重新打开VS。此外,还从 VS 安装程序执行了更新并进行了“修复”。还是同样的行为。
我还尝试按照此 msdn 论坛帖子的指示“重置 Windows 布局”和“重置所有设置” 。还是卡住了。
根据Mohsyn的建议,查看了工具>>选项>>调试。似乎没有检查与“托管或本机兼容模式”相关的任何内容。
下一步是卸载 VS 2022 并重新安装。
我在Windows 7 SP1 64位上运行Visual Studio 2015 Community Edition Update 3,我用它来开发C#应用程序.
我喜欢在调试过程中使用诊断工具来尽早发现性能问题.但是,在过去一个月左右的时间里,他们停止了为我工作(可能与安装Update 3有关,尽管我没有任何信息可以支持).我看到错误消息"在此版本的Windows上调试时无法进行CPU分析.要查看CPU使用情况详细信息,请运行不使用调试器的CPU使用率工具(Debug - > Performance Profiler ...)."
我尝试过没有成功的事情:
完全卸载并重新安装VS.
在我的VS安装上执行修复
确保在调试选项中禁用"使用{Managed,Native}兼容模式".
按照此问题中的说明启用诊断中心日志记录信息.我可以看到的错误消息不会出现在日志中.
即使我创建一个新的WPF项目,这仍然会发生,所以我不相信它有任何项目特定的原因.
还有其他我可以试试的东西吗?显然他们之前都在工作,所以我不相信有关我的Windows版本的错误消息不受支持.
假设您正在接管传统的.NET应用程序.用C#编写
您将用于评估应用程序健康状况的前五种诊断措施,概况分析或其他方面是什么?
我不仅仅关注诊断的"什么"部分,还关注"如何".例如,确实需要评估应用程序的快速/最佳响应时间....但有没有办法通过代码库的技术诊断来建立/衡量它,而不仅仅是获得用户体验反馈?
是的,你必须使用一些很棒的工具......如果你也列出它们会很棒.
我试图找出我自己的.Net服务器进程正在使用多少内存(用于监视和记录目的).
我正在使用:
Process.GetCurrentProcess().PrivateMemorySize64
Run Code Online (Sandbox Code Playgroud)
但是,Process对象有几个不同的属性,让我可以读取使用的内存空间:Paged,NonPaged,PagedSystem,NonPagedSystem,Private,Virtual,WorkingSet
然后是"峰值":我猜测它只存储了最后一次所用的最大值.
阅读每个属性的MSDN定义对我来说并没有太大帮助.我不得不承认我对内存管理方式的了解(就分页和虚拟内容而言)非常有限.
所以我的问题显然是"我应该使用哪一个?",我知道答案是"它取决于".
这个过程基本上会在内存中保存一堆列表,而其他进程与它进行通信并查询它.我期望运行它的服务器需要大量的RAM,因此我会随着时间的推移查询这些数据,以便能够估计RAM要求与其保留的列表大小相比较.
那么......我应该使用哪一个?为什么?
这可能更像是一个OOP概念问题,但这就是我想要做的.
我有一个应用程序,使用System.Diagnostics.Trace.WriteLine输出调试信息,以便可以使用DebugView查看它.
我想重写/扩展(不知道正确的术语)这个方法来记录文本文件代替,也许除了跟踪输出.这将允许我为我的应用程序编写一个新的WriteLine方法,并且我可以在应用程序的其余部分保持所有其他System.Diagnostics.Trace.WriteLine语句不变.
那么我将如何在VB.Net应用程序中更改此方法的行为?
我在这里阅读了有关自己的TraceWriter实现的Web API,例如此处,以及其他来源.
我现在使用VS2013与.NET 4.5.1并且无法找到EnableSystemDiagnosticsTracing.它的意思是在HttpConfigurationTracingExtensions类中定义,该类驻留在System.Web.Http.Tracing.dll中.但是,无法找到此程序集 - 不在"添加引用"对话框中的程序集列表中,而不是在GAC中.
这个集会应该来自哪里?Docs说这是我安装的.NET Framework 4的一部分.还安装了ASP.NET Web API 2跟踪5.0.0 NuGet包.有更新吗?我应该重新安装.NET Framework吗?
我知道自己实现ITraceWriter并不是什么大问题,但是我不知道内置实现发生了什么.