我正在使用VerySleepy 0.7分析应用程序。该应用程序用Qt 4.6.x的C++编写,用VS 2005编译,并且在Windows 7 Ultimate x64上运行。

到目前为止,使用率最高的是对RtlPcToFileHeader的调用

Exclusive Inclusive %Exclusive %Inclusive Module
33.67s    33.67s    15.13%     15.13%     ntdll

从文档中我不清楚RtlPcToFileHeader是什么,但是由于在“错误处理函数”下引用了RtlPcToFileHeader,因此似乎不应该使用它。话虽如此,由于基本上在整个性能分析捕获过程中都使用了它,因此它也可能是一些非常基本的函数调用(例如main之类的东西)或性能分析本身的副作用。

RtlPcToFileHeader函数的目的是什么?

更新:根据Mike的建议,我确实进入了运行过程,并且几次将RtlPcToFileHeader包括在堆栈跟踪中,这似乎与dynamic_cast绑定(bind)在一起。我还更改了问题以更好地反射(reflect)出我正在尝试确定RtlPcToFileHeader的实际作用。

最佳答案

只需在调试器下将其暂停即可。研究调用堆栈以了解它在做什么以及原因。然后重复几次。这样可以告诉您时间在哪里以及原因。

如果这对您来说太低级了,请尝试LTProf或任何其他报告行级百分比的墙面时间堆栈采样器,最好使用蝴蝶查看器。

令人费解的数字类型是precisely the legacy of gprof

关于c++ - 什么是RtlPcToFileHeader?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3959403/

10-11 00:04