我是新手,所以可能缺少一些基本的东西。我使用 gcc 4.8 (MinGW) 和 -g 选项编译我的 C 程序。
然后我运行它并用非常困倦的方式捕获它。一切正常,但 Sleepy 的输出如下所示:
memcpy 0.98 0.98 7.65 7.65 msvcrt unknown 0
[00000000004038FE] 0.77 0.77 6.02 6.02 a 0
memset 0.63 0.63 4.92 4.93 msvcrt unknown 0
[0000000000404549] 0.42 0.42 3.29 3.29 a 0
[000000000040282A] 0.35 0.35 2.73 2.73 a 0
[0000000000404600] 0.25 0.25 1.99 1.99 a 0
....
etc.
(我的应用程序称为 a.exe)
所以 Sleepy 看不到函数名称,我需要如何编译/运行才能使其工作?昏昏欲睡的网站给出:
支持 GCC/mingw。您现在可以使用嵌入式 DWARF2 数据分析可执行文件,它应该可以工作。这不需要特殊选项,只需使用“-g”编译以确保您有符号存在。您可能还希望使用“-fno-omit-frame-pointer”来确保正确的调用堆栈,尽管 Sleepy 通常会以任何一种方式工作。您不需要使用“-pg”或任何垃圾。它甚至可以将 Microsoft DLL 之间的正确堆栈传送到 GCC 中,这比您想象的要难。
但就我而言,这还不够。