问题标签 [diagnostics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 进程内存大小 - 不同的计数器
我试图找出我自己的 .Net 服务器进程正在使用多少内存(用于监视和记录目的)。
我正在使用:
但是,Process 对象有几个不同的属性可以让我读取使用的内存空间:Paged、NonPaged、PagedSystem、NonPagedSystem、Private、Virtual、WorkingSet
然后是“峰值”:我猜它只是存储这些最后一个所取的最大值。
阅读每个属性的 MSDN 定义对我来说并没有太大帮助。我不得不承认我对内存管理方式的了解(就分页和虚拟而言)非常有限。
所以我的问题显然是“我应该使用哪一个?”,我知道答案是“这取决于”。
这个进程基本上会保存一堆列表来记忆正在发生的事情,而其他进程与之通信并查询它的东西。我预计将在其中运行的服务器需要大量 RAM,因此我会随着时间的推移查询这些数据,以便与它保存在其中的列表的大小相比能够估计 RAM 需求。
所以......我应该使用哪一个,为什么?
.net - 在生产 .NET 桌面程序中诊断应用程序挂起
我有麻烦了。我正在开发的应用程序的用户之一偶尔但经常遇到应用程序挂起。
发生这种情况时,我们会在机器的事件日志中找到一个来源为“应用程序挂起”的条目,其中包含信息性消息“挂起应用程序 [我的应用程序],版本 [正确版本],挂起模块挂起应用程序,版本 0.0.0.0,挂起地址 0x00000000。”
我正在记录我的应用程序抛出的所有未处理的异常,发生这种情况时我的日志文件中没有任何条目。
我目前的工作假设是,在应用程序调用不安全的遗留 API 期间会发生这种挂起。这不会让我感到惊讶;我使用这个 API 已经很多年了,虽然我以前没见过它挂起,但它确实是很糟糕的代码。此外,用户报告该程序似乎随机挂起。我不认为这是真的。并不是我不相信她,而是与遗留 API 对话的代码在 BackgroundWorker 调用的方法中运行。如果后台线程使应用程序挂起,这在用户看来很可能是随机发生的。
所以,我有两个问题,一个具体的,一个一般的。
具体问题:我希望如果在非 UI 线程上运行的方法挂起,它只会杀死线程。它真的会杀死整个应用程序吗?
一般问题:
我已经记录了所有未处理的异常。我的程序已经设置为使用跟踪(尽管我需要添加检测代码来跟踪可疑方法中的活动)。还有其他我应该做的事情吗?当 .NET 应用程序挂起时,是否有允许进行某种崩溃后分析的诊断工具?.NET 框架中是否有我可以调用的机制来捕获更多(和更有用的)数据?
编辑: 仔细检查我的代码,我记得它对 BackgroundWorker 的所有使用都是通过我实现的实用程序类来包装异常处理程序中调用的方法。此处理程序记录异常,然后将其作为实用程序对象的属性返回。UI 线程中的完成事件处理程序重新抛出异常(不太理想,因为我丢失了调用堆栈,但它已经被记录了),导致 UI 的主要异常处理程序将异常报告给消息框,然后终止应用程序。
由于这些都没有发生,我非常有信心在后台线程中没有抛出异常。好吧,无论如何,没有 .NET 例外。
进一步跟进:
幸运的是,我现在已经从用户那里获得了足够的数据,可以确定遗留 API 中没有发生挂起。这意味着这显然是我做错了,这意味着我可以修复它,所以,赢了。这也意味着我可以通过跟踪来隔离问题,这是另一个胜利。我对这个问题的答案感到非常高兴;我什至更高兴我可能不需要它们来解决这个问题。
另外:PostSharp 非常出色。如果您需要向现有应用程序添加检测代码,您几乎可以肯定应该使用它。
sql-server - 从应用程序获取 SQL Server 连接信息而不进行调试?
我们正在对闭源第三方 ASP.NET 应用程序上的 SQL Server 2005 连接问题进行故障排除。该应用程序是一个 .NET 应用程序,开发公司正在使用存储 SQL Server 身份验证信息的自定义格式配置文件。
尝试连接到我们的 SQL Server 框时的应用程序收到“无法打开数据库 'databasename'。用户 'username' 登录失败”错误。我们已经测试了使用 SQL Server Management Studio 和提供给他们的应用程序的登录信息从 Web 服务器连接到 SQL Server 框,它运行良好。
有没有什么简单的方法可以让我们嗅探/确定他们试图在 SqlCommand 中使用的 SQL Server 连接信息?调试他们的代码不是一种选择,因为它是在发布模式下编译的,而且我们没有源代码。我们只需要一些东西来确定他们的应用程序无法连接的原因。
java - CompositeData 没有 keys() 方法?
我正在使用 JMX 从远程进程中保存一些诊断信息。查看 jconsole 中的接口显示返回类型是CompositeData(数据实际上以CompositeDataSupport的形式返回)。我想输出与该对象关联的所有键/值对。
问题是接口似乎有一个“values()”方法,无法获取密钥。我在这里错过了什么吗?有没有其他方法可以完成这项任务?
谢谢!
c# - 您可以在 C# 中获取堆栈上的变量列表吗?
所有,只是想知道是否有可能在 .NET/C# 中获取堆栈上的变量列表及其值?我正在为我的应用程序创建一个异常处理程序,除了标准堆栈跟踪之外,我还希望查看堆栈上任何变量的名称和值。知道这是否可以做到吗?
c# - C# 运行时应用程序诊断
我正在开发 ac# GUI,想知道是否有任何(最好是免费的)运行时诊断程序可用。
我正在寻找一种方法来监视用户与我的 GUI 的交互以及何时调用哪些函数。最好我不想添加调试代码堆栈,因为这有可能改变我正在寻找的错误的行为。
目前我正在使用 Spy++,但我发现它有点沉重,因为我对这个及其生成的数据堆栈有点陌生。
c# - How to read command line arguments of another process in C#?
How can I obtain the command line arguments of another process?
Using static functions of the System.Diagnostics.Process
class I can obtain a list of running processes, e.g. by name:
However, there is no way to access the command line used to start this process. How would one do that?
.net - 如何将 MS Windows 操作系统版本号转换为 .NET 中的产品名称?
如何将 MS Windows 操作系统版本号翻译成产品名称?
例如,在 .NET 中,可以使用以下两个属性来确定产品是 MS Windows Vista Ultimate Edition:
Environment.OSVersion.Platform returns Win32NT
Environment.OSVersion.Version returns 6.0.6001.65536
.net - log4net 与 TraceSource
在这个线程中,许多人表示他们使用 log4net。我是 TraceSources 的粉丝,想知道为什么要使用 log4net。
这就是我喜欢跟踪源的原因:
- 可插入的侦听器 - XML、TextFile、Console、EventLog,您自己的
- 可定制的跟踪开关(错误、警告、信息、详细、开始、结束、自定义)
- 可定制的配置
- 日志记录应用程序块只是一大组 TraceListeners
- 活动/范围的相关性(例如,将 ASP.NET 请求中的所有日志与给定客户相关联
- 服务跟踪查看器允许您分别针对这些活动可视化事件
- 所有这些都可以在 app.config/web.config 中进行配置。
由于 .NET 框架内部使用 TraceSources,它还为我提供了一种配置跟踪的一致方式 - 使用 log4net,我必须配置 log4net 以及 TraceSources。
log4net 给了我什么 TraceSources 没有(或者无法通过编写几个自定义 TraceListeners 来完成)?