问题标签 [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.
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 我似乎也无法获得函数名称。
c++ - c++ 代码的分析器,非常困
我是分析的新手。我想优化我的代码以满足时序约束。我使用 Visual C++ 08 Express,因此不得不下载一个分析器,对我来说它非常困。我做了一些搜索,但没有找到像样的关于 Sleepy 的教程,我的问题是:如何正确使用它?我掌握了 profiling 的大体思路,所以我按照 %exclusive 进行排序,找到我的瓶颈。首先,在这个列表的顶部,我有ZwWaitForSingleObject、RtlEnterCriticalSection、operator new、RtlLeaveCriticalSection、printf,一些迭代器......在他们占据了大约 60% 之后,我的第一个函数出现了,第一个位置是子调用。有人可以解释一下为什么上面提到的出现,它们是什么意思,如果我无法访问这个关键的 60%,我该如何优化我的代码?(对于“源文件”:未知...)。另外,对于我的函数,我认为我每行都有时间,但事实并非如此,例如算术或某些函数没有时间(未嵌套在未使用的“if”子句中)。最后一件事:如何找出某些行可以超快执行,但被调用数千次,成为实际的瓶颈?
最后,瞌睡好吗?或者我的平台的一些免费替代品?
帮助非常感谢!干杯!
- 更新 - - - - -
我找到了另一个版本的分析器,称为plain Sleepy。它显示了一些片段被调用了多少次加上行数(我猜它指向关键的一个)。所以在我的情况下.. KiFastSystemCallRet需要50%!这意味着它正在等待一些数据,对吗?如何改善这件事,是否有一种体面的方法来追踪导致这些多次调用的原因并最终删除/更改它?
c++ - VerySleepy 分析 C++ 代码
在分析我的代码以找出运行缓慢的原因时,我有 3 个函数显然需要永远使用,这就是非常困倦的说法。
这些功能是:
谁能告诉我这些功能是什么?为什么他们需要这么长时间,以及如何解决它们。
谢谢
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 中,这比您想象的要难。
但就我而言,这还不够。
c++ - 如何使用 CLion 生成用于 VerySleepy 的 dbg 文件
我的应用程序中有一些内存泄漏,我想调试它们。我想使用的 Windows 工具是Very Sleepy。问题是我在使用该软件时,无法弄清楚问题对应的源文件是什么。
据我所知,我需要一个符号文件。使用我使用的编译器 (MinGW-w64) 我有 .dbg 文件。但是,即使我已经指定了 clion 应该编译,但-DCMAKE_BUILD_TYPE=Debug
我在我的工作目录中找不到任何 .dbg 文件。
可能是什么原因?请记住,我使用 CLION。
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
不是函数,而是变量。这是怎么回事?