我在使用xperf跟踪获取完整调用堆栈时遇到了一些问题。这是在Win764位电脑上。在更高层次上,我有一个加载多个dll的exe,它们也完成了大部分工作。所有pdb文件都在一个目录中,并且我在可执行代码中获得了有效的符号和调用堆栈,因此我非常确定我的符号路径设置正确。只要我的exe调用其中一个加载的dll,我就会丢失调用堆栈信息并且堆栈列显示plugin_name.dll!?,它在展开时会调用自身。权重选项卡显示高百分比(50-90%)和高计数,但我无法获得堆栈的任何实际函数调用。例如:Process,Stack,Module,Function,Weight,%Weight,Count
我运行xperf是为了在运行程序时获取程序的跟踪信息。程序读取一个文件。它是一个用F#编写的.NET程序,文件在这里读取:System.IO.File.ReadAllLines("MyReadFile.txt")嗯。我运行xperf:xperf-onDiagEasy我停止xperf并合并到一个文件中:xperf-dmyfile.etl好的。现在我写:xperf-imyfile.etl-omyfile_stat.txt-adiskio-detail我这样做是为了获得一个包含所有文件信息的文件。显示的文件是格式化的文本文件,以便让我按文件查看磁盘统计信息。在跟踪session期间被操作的每
我一直在用xperf竭尽全力为我正在分析的工具获取符号。我在该工具中运行的代码分为.exe和.dll——要分析的重要内容位于.dll中。我运行了xperf:xperf-onPROC_THREAD+LOADER+INTERRUPT+DPC+PROFILE-stackwalkprofile然后我运行了一下我的工具,然后xperf-dprofile.etl然后我尝试了xperfview。我加载了配置文件,打开“加载符号”,然后打开了汇总表。根本没有符号——从字面上看,模块在功能列中出现了“未知”。我已经在这方面搜索了其他线程,这是我尝试过的:我设置了我的环境变量,_NT_SYMBOL_PAT
抱歉这个愚蠢的问题。我是Xperf新手。我在64位Windows8.1上,我的应用程序也是x64。我想使用Xperf在应用程序中捕获调用堆栈和我定义的事件。我在我的应用程序中注册了GUID35f7872e-9b6d-4a9b-a674-66f1edd66d5c。当我使用时:xperf-onPROC_THREAD+LOADER+Base-startUserSession-on35f7872e-9b6d-4a9b-a674-66f1edd66d5c-BufferSize1024-stackwalkprofile我可以获得所有事件但没有调用堆栈。但是,如果我删除-on35f7872e-9b6
感谢JMH,我正在为我的JAVA应用程序添加微基准测试。我在Windows10上运行基准测试:stack分析器运行良好:java-jartarget/benchmarks.jar-profstackSecondaryresult"benchmark.ValueExtractorBench.cleanValue_Benchmark:·stack":Stackprofiler:....[Threadstatedistributions]....................................................................99.7%RUNNA
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion有谁知道使用XPerfViewer(或任何其他工具)解析来自新Storport提供程序的磁盘延迟信息的方法?我用下面的文章来捕捉痕迹:http://blogs.msdn.com/b/ntdebugging/archive/2010/04/22/etw-storport.aspx这确实为我提供了一系列.etl格式的事件,XPerfViewer将随时间将其绘制为点,但我希望获得磁盘延迟图表。延迟信息在事件中,
我有一个使用native插件的应用程序。对于这些插件,我有自己的二进制格式。每个插件都在运行时使用类似于将DLL映射到进程空间的方法加载。这意味着,每个插件都有自己的ImageBase,.text或.data等部分的处理方式与传统DLL相同。唯一不同的是插件的二进制格式(它不是PE文件)和将插件映射到进程空间的加载程序代码。现在我知道通过此命令行进行跟踪时的ETW:xperf-onlatency-stackwalkprofile-buffersize1024-minbuffers300-starttracea1-onMicrosoft-Windows-Win32k:::'stack'将
使用WindowsPerformanceRecorder,是否可以根据单个进程的tracing生成ETL文件?为系统中的所有进程生成的ETL文件生成以GB为单位的ETL文件,时间间隔短至几分钟。 最佳答案 ETW(内核事件)跟踪是系统范围的并捕获所有进程。 关于windows性能记录器记录具体过程,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/14963257/
使用xperf,我可以生成跟踪并获得所有文件的“平面”列表,如下所示:xperf-onFileIO+FILE_IO+FILE_IO_INIT+FILENAME-stackwalkFileRead+FileWrite+FileDeletexperf-startFileIOSession-heap-PidNewProcess"C:\Python27\x86\python.exescratchy.py"-WaitForNewProcess-BufferSize1024-MinBuffers128-MaxBuffers512-stackwalkHeapAlloc+HeapRealloc-f./
假设我有一个人为设计的程序:#includevoiduseless_function(){Sleep(5000);}voiduseful_function(){//...dosomeworkuseless_function();//...dosomemorework}intmain(){useful_function();return0;}目标:我希望探查器告诉我useful_function()正在不必要地调用useless_function(),它没有明显的等待原因。在XPerf下,这不会出现在我的任何图表中,因为对WaitForMultipleObjects()的调用似乎被计入了