标签: procmon

为什么我在Actions菜单上找不到"Debug Managed Memory"?

为什么我在操作菜单上找不到"调试托管内存",如本MSDN文章所述:分析.NET Framework内存问题

我的Visual Studio: 在此输入图像描述

应该如何看待: 在此输入图像描述

c# memory-leaks dump procmon visual-studio

57
推荐指数
1
解决办法
1万
查看次数

如何在C#中记录低级OS文件事务?

由于文件/进程监视器在进行日志记录时无法进行过滤和不必要的重复,因此我希望重新创建该程序的功能并实时记录所有Windows文件操作.

我想记录各种属性,如时间,进程名称,源路径,目标路径,操作,结果和详细信息,就像Process Monitor一样.

如何让C#从操作系统中提取此信息?


编辑:正如zett42指出的那样,FileSystemWatcher例如,从进程本身创建的文件事件不会被拦截.举例来说,没有这些交易显示出来,即使我添加的事件:Changed,Created,Renamed,和DeletedFileSystemWatcher和设置EnableRaisingEvents标志设置为true.


编辑2:使用SimonMourier建议的Microsoft.Diagnostics.Tracing.TraceEvent nuget包,我设法敲了下面的代码.

本节放入后台工作者:

Console.CancelKeyPress += (sender, e) => session.Stop();
session.EnableKernelProvider(KernelTraceEventParser.Keywords.All);
session.Source.Kernel.FileIOWrite += Kernel_FileIOWrite;            
session.Source.Process();
Run Code Online (Sandbox Code Playgroud)

然后,在调用(自动)时,创建的FileIOWrite事件将运行以下命令:

private void Kernel_FileIOWrite(Microsoft.Diagnostics.Tracing.Parsers.Kernel.FileIOReadWriteTraceData obj)
{
    string filename = obj.FileName;
    string processpath = "";
    if (obj.ProcessID == 0) processpath = "System Idle Process";
    else if (obj.ProcessID == 4) processpath = "System";
    else
    {
        try { processpath = "ID: " …
Run Code Online (Sandbox Code Playgroud)

c# winapi interop file-monitoring procmon

11
推荐指数
1
解决办法
297
查看次数

写入FileStream的行为很奇怪,正如进程监视器所观察到的那样

我正在使用FileStream写入文件,并使用Process Monitor观察底层系统调用.我在生产部署中遇到了一些文件锁定问题,所以我正在密切关注这些细节.

此示例代码:

        using (FileStream fs = new FileStream("c:\\temp\\test.txt", FileMode.Create, FileAccess.Write, FileShare.Read))
        {
            fs.Write(new byte[] { 1, 2, 3, 4, 5 }, 0, 5);
            fs.Close();
        }
Run Code Online (Sandbox Code Playgroud)

导致以下系统调用:

9:27:09.4561092 AM  ConsoleApplication1.vshost.exe  2320    CreateFile  C:\temp\test.txt    SUCCESS Desired Access: Generic Read/Write, Disposition: OverwriteIf, Options: Synchronous IO Non-Alert, Non-Directory File, Open No Recall, Attributes: n/a, ShareMode: Read, AllocationSize: 0, OpenResult: Overwritten
9:27:12.2217409 AM  ConsoleApplication1.vshost.exe  2320    WriteFile   C:\temp\test.txt    SUCCESS Offset: 0, Length: 5
9:27:12.2219901 AM  ConsoleApplication1.vshost.exe  2320    CloseFile   C:\temp\test.txt    SUCCESS 
9:27:12.2234484 AM  ConsoleApplication1.vshost.exe …
Run Code Online (Sandbox Code Playgroud)

.net c# file-io filestream procmon

6
推荐指数
1
解决办法
1277
查看次数

*.pyd 文件无法加载,但 DependancyWalker 恢复正常,并且 ProcMon 显示它已加载

我正在尝试使用 Python 加载 *.pyd,但收到众所周知的“导入错误:DLL 加载失败:找不到指定的过程”。错误。

我已经完成了以下操作:

1.) 使用 Dependency Walker 研究 *.pyd。GPSVC.DLL 和 IESHIMS.DLL 出现丢失,但延迟加载,IEFRAME.DLL 也出现丢失导出,但也是延迟加载。据我了解,这些没有被使用,并且无论如何都是延迟加载,所以它们不应该是问题。

2.) 在 python 命令窗口中对 foo.pyd 执行“import foo”,并用 ProcMon 进行监视。ProcMon 在“foo.pyd”上显示事件“LoadImage”,结果成功。

这似乎意味着 *.pyd 文件已正确加载。

那么我错过了什么。我的 Windows 诊断告诉我一切都很好,但 python 告诉我无法加载该东西(通常是由于缺少 dll 或符号)。

有想法吗?

谢谢!

python dll pyd procmon

5
推荐指数
1
解决办法
1万
查看次数

使用 procmon 了解共享冲突

我有一个应用程序构建(使用多个不同进程)的 procmon 跟踪,该应用程序在某些时候无法写入文件,因为它正在被另一个进程使用。我看到的第一件事是该文件在构建开始时被删除:

\n\n
3:49:32.9928378 PM  foo.exe 11460   QueryOpen   SUCCESS CreationTime: 8/26/2016 12:49:00 PM, LastAccessTime: 8/26/2016 12:49:00 PM, LastWriteTime: 8/26/2016 12:49:05 PM, ChangeTime: 8/26/2016 12:49:06 PM, AllocationSize: 57,344, EndOfFile: 56,624, FileAttributes: N\n3:49:32.9929337 PM  foo.exe 11460   CreateFile  SUCCESS Desired Access: Read Attributes, Delete, Disposition: Open, Options: Non-Directory File, Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened\n3:49:32.9929791 PM  foo.exe 11460   QuerySecurityFile   SUCCESS Information: 0x20\n3:49:32.9930238 PM  foo.exe 11460   QueryAttributeTagFile   SUCCESS Attributes: N, ReparseTag: 0x0\n3:49:32.9930526 PM  foo.exe 11460   SetDispositionInformationFile …
Run Code Online (Sandbox Code Playgroud)

windows handle procmon

5
推荐指数
0
解决办法
1万
查看次数

如何在一天中过滤布告结果?

在一天中的某个时间对procproc结果进行过滤无法像预期的那样起作用。假设结果显示一行中的时间为“ 7:44:26.4065994 AM”。

  • 如果您对“时间” “ 7:44:26” 开头 进行过滤,则会过滤掉所有结果。
  • 如果您对“时间”中包含 “ 7:44:26” 的内容进行过滤,则会获得预期的结果。
  • 如果您尝试更精确地过滤,则指定包含 '7:44:26.40',所有结果都会被过滤掉。

与其他procmon字段(被统一视为字符串)不同,显然时间字段不是。可能有一些方法可以精确过滤,但这并不明显。

procmon

5
推荐指数
1
解决办法
665
查看次数

如何在启动时禁用进程监视器中的日志记录

如何打开进程监视器并记录所有日志记录组件已停止。

默认情况下,它开始捕获所有日志,没有时间做CTRL+E这会停止捕获事件并应用我的过滤器。

它填充虚拟内存的速度足够快,以至于变得“没有响应”。

我对使用过滤器将文件 I/O 记录到特定路径感兴趣,但由于日志随不感兴趣的组件增长而导致进程监视器挂起。

我没有找到与进程监视器启动相关的任何答案。

windows procmon sysinternals process-monitor

3
推荐指数
1
解决办法
1882
查看次数