问题标签 [verysleepy]

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.

0 投票
1 回答
2265 浏览

c++ - 如何让非常困的探查器识别 C++ 二进制文件中的函数名称?

我有一个使用 Visual Studio 2010 构建的混合 C#/托管 C++/非托管 C++ 的工具。代码实际上分布在一个 .exe(我称之为 mybinary.exe)和一个 .dll(mylib.dll)中。

我已经在项目上为 dll 和 exe 设置了构建设置,以便在发布构建中生成 PDB 文件。我已经确保 PDB 文件都在 exe 和 pdb 所在的同一目录中。但是当我调试这个程序时,我仍然看不到函数的名称;我只看到地址。这是我在“非常困”的第一个屏幕中选择程序时在底部的小状态栏中得到的相关摘录:

所以看起来 mylib.pdb 与 mylib.dll 的匹配存在问题,出于某种原因我不清楚,但我会注意到我也没有获得来自 mybinary.exe 的函数的正确地址。我有一台最新安装的新计算机,所以这不是“某些库已经过时”的问题。

如果有人可以提供帮助,将不胜感激!

编辑:实际上事实证明这并不是特定于优化代码的。其他分析器在优化 C++ 时遇到了一些问题,这就是我切换到 Very Sleepy 的原因,但在测试时我现在意识到,即使在调试模式下编译时,使用 Very Sleepy 我似乎也无法获得函数名称。

0 投票
2 回答
10208 浏览

c++ - c++ 代码的分析器,非常困

我是分析的新手。我想优化我的代码以满足时序约束。我使用 Visual C++ 08 Express,因此不得不下载一个分析器,对我来说它非常困。我做了一些搜索,但没有找到像样的关于 Sleepy 的教程,我的问题是:如何正确使用它?我掌握了 profiling 的大体思路,所以我按照 %exclusive 进行排序,找到我的瓶颈。首先,在这个列表的顶部,我有ZwWaitForSingleObjectRtlEnterCriticalSectionoperator newRtlLeaveCriticalSectionprintf,一些迭代器......在他们占据了大约 60% 之后,我的第一个函数出现了,第一个位置是子调用。有人可以解释一下为什么上面提到的出现,它们是什么意思,如果我无法访问这个关键的 60%,我该如何优化我的代码?(对于“源文件”:未知...)。另外,对于我的函数,我认为我每行都有时间,但事实并非如此,例如算术或某些函数没有时间(未嵌套在未使用的“if”子句中)。最后一件事:如何找出某些行可以超快执行,但被调用数千次,成为实际的瓶颈?

最后,瞌睡好吗?或者我的平台的一些免费替代品?

帮助非常感谢!干杯!

        • 更新 - - - - -

我找到了另一个版本的分析器,称为plain Sleepy。它显示了一些片段被调用了多少次加上行数(我猜它指向关键的一个)。所以在我的情况下.. KiFastSystemCallRet需要50%!这意味着它正在等待一些数据,对吗?如何改善这件事,是否有一种体面的方法来追踪导致这些多次调用的原因并最终删除/更改它?

0 投票
4 回答
3168 浏览

c++ - VerySleepy 分析 C++ 代码

在分析我的代码以找出运行缓慢的原因时,我有 3 个函数显然需要永远使用,这就是非常困倦的说法。

这些功能是:

谁能告诉我这些功能是什么?为什么他们需要这么长时间,以及如何解决它们。

谢谢

0 投票
1 回答
3085 浏览

windows - 捕获 MinGW 编译文件时,Very Sleepy 看不到函数名称

我是新手,所以可能缺少一些基本的东西。我使用 gcc 4.8 (MinGW) 和 -g 选项编译我的 C 程序。

然后我运行它并用非常困倦的方式捕获它。一切正常,但 Sleepy 的输出如下所示:

(我的应用程序称为 a.exe)
所以 Sleepy 看不到函数名称,我需要如何编译/运行才能使其工作?昏昏欲睡的网站给出:

支持 GCC/mingw。您现在可以使用嵌入式 DWARF2 数据分析可执行文件,它应该可以工作。这不需要特殊选项,只需使用“-g”编译以确保您有符号存在。您可能还希望使用“-fno-omit-frame-pointer”来确保正确的调用堆栈,尽管 Sleepy 通常会以任何一种方式工作。您不需要使用“-pg”或任何垃圾。它甚至可以将 Microsoft DLL 之间的正确堆栈传送到 GCC 中,这比您想象的要难。

但就我而言,这还不够。

0 投票
2 回答
1289 浏览

c++ - 用于 C++ 分析的非常困倦和 Callgrind 之间的区别

我正在尝试了解非常昏昏欲睡Callgrind进行分析的区别。我打算分析的代码是用 C++ 编写的,可以在 Linux 和 Windows 下运行。

在 Linux 上,我能够使用 Callgrind 来查看 Self 和 inclusive 的相对成本。据我了解,Callgrind 使用仪器化分析技术并且需要相当长的时间。但是,Very Sleepy 使用统计分析并且非常快。由于两者都使用不同的分析方法,我无法比较两者的结果。

有没有办法可以在 Linux 和 Windows 上进行某种配置文件比较?不幸的是,Callgrind 对于 Windows 不可用,反之亦然,对于非常困倦。

0 投票
1 回答
285 浏览

c++ - 如何使用 CLion 生成用于 VerySleepy 的 dbg 文件

我的应用程序中有一些内存泄漏,我想调试它们。我想使用的 Windows 工具是Very Sleepy。问题是我在使用该软件时,无法弄清楚问题对应的源文件是什么。

图片

据我所知,我需要一个符号文件。使用我使用的编译器 (MinGW-w64) 我有 .dbg 文件。但是,即使我已经指定了 clion 应该编译,但-DCMAKE_BUILD_TYPE=Debug我在我的工作目录中找不到任何 .dbg 文件。

可能是什么原因?请记住,我使用 CLION。

0 投票
0 回答
60 浏览

c - 非常昏昏欲睡的分析器将单纯的变量混淆为函数,以及其他问题

我一直在寻找适用于 Windows 的 C 分析器,它可以让我检查在源代码行级别上花费的时间,而不仅仅是在函数级别上。这是为了在程序中找到可以优化的热点。

非常困倦看起来很适合这个目的。但是,在 Source 视图中,似乎每行代码所花费的时间实际上并不等于该函数的 100% 独占时间。

例如,Very Sleepy 说我们在函数中花费了 18.50 秒的独占时间。但是,将源视图中为该函数指定的所有持续时间加起来只加起来大约 10 秒。

这就是我编译程序的方式:

然后,我通过 GUI 打开 Very Sleepy,并对运行过程进行精确采样 100 秒。

我正在使用非常困的 CS 0.90。我正在运行 Windows 7 并使用 MSYS2 的 Mingw-w64 子系统。

编辑:

我还注意到另外两件奇怪的事情。首先,Very Sleepy 显示了一些没有名称的函数,但确实将它们识别为配置模块的一部分。

其次,Very Sleepy 似乎认为一些变量实际上是函数。例如:

在此处输入图像描述

extension_module_file_suffix不是函数,而是变量。这是怎么回事?