问题标签 [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.
diagnostics - C:我应该在库中使用什么来跟踪/诊断消息?
在 .NET 中,我会使用 System.Diagnostics.Trace ...
我将在 C 或 C++ 中使用什么?
现在我定义了一个宏:
诊断开启:
调试关闭:
有标准方法吗?
windows - 实时记录
我有一个应用程序,它有一个循环,是“调度程序”的一部分,它始终运行并且是应用程序的核心。很像一个游戏循环,只是我的应用程序是一个 WPF 应用程序,它不是一个游戏。自然地,应用程序会在很多点上进行日志记录,但调度程序会进行一些敏感的监控,有时仅从日志中就不可能知道可能出了什么问题(我说的错误不是指异常)或当前状态。
因为调度程序的内部循环运行间隔很短,所以您不能在其中执行基于文件 I/O 的日志记录(或使用事件查看器)。首先,您需要实时观看,其次日志文件的大小会增长得非常快。所以我正在考虑如何将这些数据实时显示给用户,我考虑了一些事情:
- 在 UI 中实时显示数据
- 使用 AllocConsole/WriteConsole 在控制台中显示此信息
- 使用不同的控制台应用程序来显示此信息,使用管道或其他 IPC 技术在调度程序和控制台应用程序之间进行通信
- 使用 Windows 的性能监视器并以某种方式将这些信息提供给它
- ETW
在 UI 中显示会有问题。首先,它没有与我为我的应用程序考虑的 UI 集成,我不想仅仅为此而使 UI 复杂化。这种诊断只会很少发生。其次,会有一些重要的数据保护,因为调度程序有它自己的线程。
一个单独的控制台窗口可能会起作用,但我仍然担心它是否不是太大的阈值。分配我自己的控制台,因为这是一个 Windows 应用程序,可能会比不同的控制台应用程序 (3) 更好,因为我不需要担心 IPC 通信和非阻塞通信。但是,用户可以关闭我分配的控制台,在这种情况下会出现问题。使用单独的过程,您不必担心它。
假设有一个用于性能监视器的 API,它不会与我的应用程序很好地集成或对用户来说很明显。使用 ETW 也解决不了任何问题,只是一个随机的想法,我仍然需要以某种方式显示这些信息。
别人怎么想,会不会有其他我错过的方式?
c# - 诊断 .NET Legacy
假设您正在接管旧版 .NET 应用程序。用 C# 编写
您将采用哪些前 5 项诊断措施、分析或其他方式来评估应用程序的运行状况?
我不仅关注诊断的“什么”部分,还关注“如何”。例如,确实有必要评估应用程序的快速/最佳响应时间。...但是有没有办法通过代码库的技术诊断来建立/衡量它,而不是仅仅获得用户体验反馈?
(来源:gmu.edu)
是的,肯定会有一些很棒的工具供您使用……如果您也列出它们会很棒。
asp.net - IE7 和 8 在 CSS 图像上随机挂起
我们有一个已经投入生产一年多的 ASP.NET 3.5 应用程序。我们的上一个版本是几个月前。我们使用 CSS 来为 div 等设置背景图像的样式和应用。服务器是带有 IIS 的 Windows 2003。
突然,本周,我们收到了一些用户的报告,称该页面在加载时似乎挂断了。状态栏显示页面主区域中使用的背景图像的名称(在 CSS 中分配)。在我们的办公室,我们中的一些人可以重现问题,而其他人则不能。IE6 和 Firefox 似乎没有受到影响,只有 IE7/8。在受影响的机器上运行 Fiddler 并尝试查看请求发生了什么似乎使问题消失(通过 Fiddler 运行时,它在没有时返回)。在挂起的负载上点击刷新通常会使页面加载正常。
我检查了背景图像,甚至将其替换为存档副本。没有喜悦。我们从生产源重新部署了该应用程序。没有喜悦。我们重新启动了 IIS 并最终重新启动了整个服务器。事件日志、应用程序日志或 IIS 日志中没有异常条目。最后,我完全删除了图像并重新设置了页面的样式以不使用背景图像。这至少解决了现在的问题。
但是,我们有其他图像“挂起”的报告。这些图像是 PNG,但我听说过一些传闻,有时 GIF 会挂起,但我没有截图可以确认。
这才刚刚开始“出乎意料”地发生。最近没有应用到服务器的版本或更新。我们甚至检查了客户端上的更新,以查看最近的 Windows 更新是否可能导致客户端出现这种情况,但在过去几周内没有任何更新。
如果您有任何有关此问题的信息,我很乐意听取您的意见。我也非常感谢我们可以尝试的其他诊断的任何建议。
asp.net - ASP.NET 诊断页面的安全性
我正在考虑为 ASP.NET 应用程序创建一个诊断页面,该页面主要供管理员使用,以获取有关诊断问题的应用程序的更多信息。
页面可能包含的信息示例:
- System.Environment.MachineName(可能在网络场场景中有用)
- 系统.环境.版本
- 环境.用户名
- 数据库名称
- 当前用户的会话 ID
从安全角度来看,此页面上的某些信息可能是敏感的。如果你以前做过这种页面,你在访问这个页面时设置了什么样的安全措施?.
编辑 :
我应该补充一下——有时在以特定(即真实)最终用户身份登录时查看此页面可能会很有用。例如,说问题只能在以特定用户身份登录时重现。能够查看该用户的诊断页面可能很有用。例如,知道当前会话 ID 可能有助于调试。
编辑 2:
我开始认为这个诊断页面实际上应该是两个不同的页面。一种显示对所有用户都相同的内容(例如数据库名称、CLR 版本),另一种显示可能因会话而异的内容(例如浏览器信息、会话 ID)。然后您可以为第一页锁定更多安全性。
gcc - 包含所有 GCC 错误和警告消息的网页?
我需要一个网页链接,其中列出了 GCC 可以显示的所有错误消息和警告;实际消息,而不是描述。
如果该列表按最常遇到的诊断顺序排列,那将是更可取的。
c# - TraceSource.TraceTransfer 与 TraceSource.TraceEvent(TraceEventType.Transfer
使用 System.Diagnostics TraceSource 进行日志记录/跟踪时,使用 TraceSource.TraceTransfer 和 TraceSource.TraceEvent(TraceEventType.Transfer, ... 是否有区别?
在我们的环境中,我们将开发许多将通过 WCF 进行通信的服务。我们还在评估我们应该使用什么平台来记录/跟踪。我们倾向于使用 System.Diagnostics,至少部分是因为能够使用 CorrelationManager、ActivityID、TraceTransfer 等关联服务之间的日志。
我可以在 TraceSource 的文档中看到它有一个 TraceTransfer 方法以及一个可以将 TraceEventType.Transfer 作为事件类型的 TraceEvent。你什么时候使用一个与另一个?我见过像这里这样的例子,它们展示了如何使用 Start/Stop 以及如何管理 ActivityID 和 CorrelationManager,但我很少看到有人使用 TraceSource.TraceEvent(TraceEventType.Transfer, ... )。这里有一个示例显示使用 TraceEventType.Transfer(以及显式调用 TraceTransfer)。
至此,也许我实际上已经开始回答我自己的问题了……
似乎 TraceSource.TraceTransfer 正在使用作为参数传递的 ActivityID 显式执行某些操作,而调用 TraceSource.TraceEvent(TraceEventType.Transfer, ...) 并没有显式对 ActivityID 执行任何操作(因为它没有作为参数传递)。看起来它实际上只是在记录另一个事件,恰好是一个传输事件,但没有对 CorrelationManager 或其他任何东西做任何其他事情。
谢谢你的帮助。
c# - C# 中的简单循环(移动平均)数组
作为诊断,我想在我的应用程序中显示每秒的周期数。(想想第一人称射击游戏中的每秒帧数。)
但我不想显示最近的值,或者自发布以来的平均值。我要计算的是最后 X 值的平均值。
我想,我的问题是关于存储这些值的最佳方式。我的第一个想法是创建一个固定大小的数组,这样每个新值都会推出最旧的值。这是最好的方法吗?如果是这样,我将如何实施它?
编辑: 这是我写的课程:RRQueue。它继承队列,但在必要时强制执行容量和出队。
编辑 2: Pastebin 已经过时了。现在在GitHub 存储库上。
.net - Windows Azure 上的诊断中没有事件日志?
我正在尝试让 .NET Remoting 在 Windows Azure 上工作,并具有 Web 角色。尝试访问 URL 时出现 500 内部服务器错误。我尝试过使用 Azure MMC ( http://code.msdn.microsoft.com/windowsazuremmc ),但我只能获取基础结构日志。没有事件日志、Azure 日志或类似内容。我究竟做错了什么?我尝试将日志级别过滤器设置为关键、错误、警告甚至未定义,但没有任何运气。
c# - 如何获取可用系统内存的大小?
是否可以在 C#.NET 中获取系统可用内存的大小?如果是的话怎么办?