问题标签 [system.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.

0 投票
2 回答
88 浏览

.net - .NET 程序集未使用 System.Process 创建为背景进程

我正在尝试使用System.Diagnostic.ProcessAPI 启动后台进程。它启动所有本机和窗口形式的基本进程,例如 notepad.exe,但这无法启动纯托管的无 GUI 程序集。任务管理器不会将其列表中列出的那些程序集显示为单独的进程,并且不会出现异常或错误代码。

Process.Start对于任务管理器中可见的纯托管程序集,是否有任何其他方法可以按需启动后台进程?

0 投票
4 回答
5574 浏览

.net - System.Diagnostics.Debug 命名空间与其他日志记录解决方案(log4net、MS Enterprise Library 等)

我目前正在调查 .net 项目的各种日志记录可能性,我无法在 System.Diagnostics.Debug/Trace 功能和第三方库(如 log4net、MS Enterprise Library、NLog 等)之间做出决定。
目前我发现了这一点:

  • System.Diagnostics 相当难以配置和使用,因为您需要显式配置所有侦听器、过滤器、源等。它似乎也缺乏对数据库的批量插入(考虑分别写入 100'000 个日志条目它自己的插入,可怕,不是吗?)。但是有些人认为不使用额外的库来做像 Logging 这样的“基本”事情是“很酷的”(当然,在某些时候,减少项目所依赖的 3rd 方库的数量是有意义的,但这次不是,我想)
  • 3rd 方更强大,通常更快,更容易使用,但配置有时也很痛苦,而且这些库通常不太可靠(比如 EntLib 神秘地突然停止记录等)
  • Common.Logging 呢?是否值得尝试(因为,正如我所听说的,它提供了各种日志框架的插件,并且充当应用程序和所需库之间的接口)?


如果有人能指出我上面给出的比较的正确方向或纠正(或添加一些东西),我将不胜感激!也许如果您鼓励我使用第 3 方,您可以建议一些特定的方(考虑到我们的应用程序很可能不需要任何花哨的东西,如 UDP、滚动文件等 - 只需普通文件、电子邮件、数据库和事件簿)?
提前致谢!

0 投票
1 回答
3355 浏览

memory-leaks - 如何解决 System.Diagnostics.PerformanceCounter 引起的内存泄漏

概括

我编写了一个以参数为参数的进程监视器命令行应用程序:

  • 进程名称或进程 ID
  • CPU 阈值百分比。

该程序所做的是监视所有具有传递名称或 pid 的进程,如果它们的 CPU 使用率超过阈值%,它会杀死它们。

我有两个课程: ProcessMonitorProcessMonitorList

前者,环绕System.Diagnostics.PerformanceCounter
后者是一个IEnumarable允许前者的类似列表的结构。

问题

该程序本身运行良好,但是如果我在任务管理器上查看内存使用情况,它会以每秒约 20kB 的增量增长。PerformanceCounter注意:程序每秒轮询一次 CPU 计数器。

这个程序需要在一个使用率很高的服务器上运行,并且它正在监视大量的进程。(20-30)。

调查至今

我使用 PerfMon 来监控进程的私有字节数与所有堆中的总字节数,根据下面引用的文章中介绍的逻辑,我的结果表明,虽然波动,但该值仍然在可接受的范围内,并且因此没有内存泄漏:
文章

我还使用 FxCop 来分析我的代码,但它没有提出任何相关的信息。

情节变厚了

不习惯只是说,​​哦,那么没有内存泄漏,我进一步调查,发现(通过调试)以下代码行显示了泄漏发生的位置,箭头显示了确切的行。

以上是 _pc 启动的地方,并且在我的ProcessMonitor类的构造函数中。

以下是导致内存泄漏的方法。每秒都会从我的 main 调用此方法。

这向我表明泄漏存在于方法内部NextValue(),该方法位于 System.Diagnostics.PerformanceCounter 类内部。

我的问题:

  1. 这是一个已知问题,我该如何解决?
  2. 我假设任务管理器的内存使用量增加意味着确实存在内存泄漏正确吗?
  3. 有没有更好的方法来监控特定进程的多个实例并在它们超过特定阈值 CPU 使用率时将其关闭,然后发送电子邮件?
0 投票
1 回答
1648 浏览

silverlight - 为什么我在 System.Diagnostics silverlight 项目 VS 2010 中找不到进程类

我想使用 process.getprocesses() 但它似乎不在我的诊断类中,为什么?!!!

0 投票
1 回答
1037 浏览

wcf - WCF 审核/日志记录

我需要在我的 WCF 服务中提供不可否认性,并希望将所有传入的 SOAP 请求存储到带有签名/安全数据和所有信封内容的 SQL 服务器数据库中

这样,当出现问题时,我们可以告诉客户“您好,这是您签名的消息,就像您写的一样。为此,我需要存储 SOAP 信封 XML 和我的持久业务对象/事务之间的关系。

示例:是用于将客户 ID=4567添加到我的客户数据表的SOAP 信封。

我需要在 SOAP 信封和我的应用程序执行的业务事务之间建立链接。存储记录消息的@@identity 可能是一种解决方案。但是,我把它放在哪里?在 SOAP 正文中?把它留在记忆里?

我已经阅读了有关登录 WCF 并编写了一个数据库记录器,它将日志信息而不是文本文件插入到表中,但我不知道如何将此数据与到达我的 WCF 服务的已解析/反序列化的 bussines 数据合同对象链接起来方法。我什至不知道这是否是正确的方法!

任何模式/提示/提示/工具/帮助将不胜感激。谢谢。

0 投票
3 回答
62572 浏览

c# - 使用 PerformanceCounter 跟踪每个进程的内存和 CPU 使用情况?

如何使用System.Diagnostics.PerformanceCounter跟踪进程的内存和 CPU 使用情况?

0 投票
3 回答
17606 浏览

c# - “优雅地”杀死一个进程

现在我正在使用 Process.Kill() 来杀死一个进程。有没有一种方法,而不是立即杀死它,我可以向进程发送一条消息,指示它关闭,以便它可以优雅地清理和关闭。基本上,我正在寻找与单击右上角的红色 X 等效的方法,我相信它确实会向应用程序发送一条请求关闭的消息。

0 投票
1 回答
832 浏览

c# - System.Diagnostics.Trace.TraceListener UnsafeStringCopy 来自 ASP.NET 的异常

尝试从 ASP.NET 应用程序使用的程序集编写 Diagnostics.Trace 消息时,我收到一个奇怪的间歇性错误。它是 IIS7 上的 .NET 3.5。

代码设置是,当 web.config 指定了调试时,我添加了一个HttpResponseTraceListenerto的实例System.Diagnostics.Trace.Listeners。我正在这样做,所以在我的其他程序集中,我可以在未设置为使用 Visual Studio 进行调试的测试服务器上运行时写出调试信息。因此,在我的另一个程序集中,我使用System.Diagnostics.Trace.WriteLine输出信息,然后将其写入响应流(内联,但出于我的目的,这很好)。

错误是:

你调用的对象是空的。

相关堆栈信息为:

在 System.Web.Util.StringUtil.memcpyimpl(Byte* src, Byte* dest, Int32 len) 在 System.Web.Util.StringUtil.UnsafeStringCopy(String src, Int32 srcIndex, Char[] dest, Int32 destIndex, Int32 len)在 System.Web.HttpWriter.Write(String s) 在 System.Web.HttpResponse.Write(String s) 在 SSO.HttpResponseTraceListener.Write(String message) 在 HttpResponseTraceListener.cs:line 23 在 SSO.HttpResponseTraceListener.WriteLine(String message )在 HttpResponseTraceListener.cs:System.Diagnostics.TraceInternal.WriteLine(字符串消息)的第 30 行

TraceListener 类如下:

0 投票
2 回答
1275 浏览

c# - 使用 System.Diagnostics.Process.Start 运行程序会导致 MissingMethodException

我正在开发一个 Compact Framework 2.0 项目,我正在尝试使用 Process.Start 从另一个程序“A”中启动一个程序“B”。我以前做过几次,但这次我遇到了一些奇怪的问题。

程序“B”确实启动了,但它会导致 MissingMethodException,基本上告诉我它缺少它引用的某个程序集。问题是程序集 .dll 就在那里,与程序“B”在同一个文件夹中。如果我双击程序“B”,它运行正常,没有 MissingMethodException,只有在程序“A”中使用 Process.Start 启动时才会出现此问题。我完全不知道这里发生了什么。我尝试设置 WorkingDirectory 属性,但没有成功。关于为什么程序在通过 Process.Start 执行时无法加载其引用的任何想法?谢谢

编辑我只是想到了一些东西......程序“A”和程序“B”都使用程序“B”未加载的.dll。如果两个程序不能同时加载相同的 .dll,那就是问题所在。是这样吗?

0 投票
3 回答
2688 浏览

.net - 如何确定 System.Diagnostics.Process 是 32 位还是 64 位?

我试过了:

但它为 x64 进程抛出了异常:

Win32Exception: 只有一部分 ReadProcessMemory 或 WriteProcessMemory 请求完成