我正在尝试查看带注释的源,$ valgrind --tool=callgrind ./myProgram然后$ kcachegrind使用Ubuntu 12.04(我在$ qcachegrind使用Mac OSX时遇到了同样的问题).
C++脚本myProgram.cpp调用生活在.hpp文件中的函数(通过#include "../include/myHeader.hpp"等).我myProgram.cpp像这样编译:
g++ -g -o myProgram myProgram.o -l<some third party lib>
Run Code Online (Sandbox Code Playgroud)
我不关心查看第三方库的注释源.
我想看到的是 函数in myHeader.hpp和for的注释源myProgram.cpp.
相反,我看到 kcachegrind的Flat Profile窗口,其中列出了所有被调用的函数,包括函数myHeader.hpp- 这很棒.现在,kcachegrind报告函数的位置myHeader.hpp来自myProgram- 这很奇怪.最后,当我从Flat Profile窗口中选择任何函数并请求查看源代码时,我遇到了:
There is no source available for the following function
<name of the selected function>
This is because no debug information is present.
Recompile the source …Run Code Online (Sandbox Code Playgroud) 目前,我无法让我的kcachegrind实例显示超过499个列表项.这给我留下了一个不完整的调用图.
有没有办法不跳过功能?
我正在使用valgrind工具-callgrind和kcachegrind对大型项目进行概要分析,并且想知道是否有一种方法可以使callgrind报告所有功能(不仅是最昂贵的功能)的统计信息。
具体来说-当我在kcachegrind中可视化调用图时,它仅包含那些非常昂贵的函数,但是我想知道是否有办法将项目中的所有函数都包含在调用图中。下面给出了用于生成分析信息的命令:
valgrind --dsymutil=yes --tool=callgrind $EXE
Run Code Online (Sandbox Code Playgroud)
我不确定是否必须为valgrind提供任何选项,或者是否可能以其他优化方式编译应用程序。这可能有些琐碎,但我找不到解决方案。任何对此的高度赞赏。
谢谢 !
我想分析python代码的性能,为此我使用了cProfile模块并生成了python文档中提到的.cprof文件。我正在使用pyprof2calltree python模块将.cprof文件打开到KCacheGrind中。
。我已经放入了分析结果的屏幕快照,它表明名为循环5的函数占用了100.04%的CPU时间。我不知道这代表什么。它也没有显示此功能的任何源代码。
我正在使用valgrind callgrind来分析gtk上的程序.然后我使用kcachedgrind来读取结果.我在这里获取了kcachedgrind的更新截图:http://i41.tinypic.com/168spk0.jpg .它说函数gtk_moz_embed_new()花费了'15 .61%'.但我不明白这是怎么可能的.函数gtk_moz_embed_new()字面上有1行:它只是调用g_object_new().
GtkWidget *
gtk_moz_embed_new(void)
{
return GTK_WIDGET(g_object_new(GTK_TYPE_MOZ_EMBED, NULL));
}
Run Code Online (Sandbox Code Playgroud)
你能帮助理解结果或如何使用kcachedgrind.
谢谢.
X debug 将输出作为部分而不是一个文件返回。我正在使用 ubuntu 16,不知道为什么突然输出在几个文件中。我遇到的问题是我无法在 Kcachegrind 中打开这些文件,因为输出在单独的文件中有不同的部分。任何人?提前致谢
使用两者来分析一些C++数字运算代码,gprof并kcachegrind为对执行时间贡献最大的函数(取决于输入的50-80%)给出类似的结果,但对于10-30%之间的函数,这些工具都给出不同的结果.这是否意味着其中一个不可靠?你会怎么做?
有时我运行kcachegrind,点击一会儿,点击关闭左侧面板的小'x'(哎呀!不知道如何取回它),点击更多,完全丢失,然后退出kcachegrind.
然后我再次在相同的输入文件上重新运行kcachegrind,希望重新开始,但相反,kcachegrind"帮助"记住我所处的破碎状态并让我回到那里,即完全丢失并且我有一个缺少的面板不知道怎么回来.
我该如何恢复?
我该如何回到起点?也就是说,默认布局,默认节点,默认其他一切.
我在ubuntu 14.04上使用KCachegrind版本0.7.4kde.
对于我的项目之一,我需要导入一个非常大的文本文件(~950MB).我正在为我的项目使用Symfony2和Doctrine 2.
我的问题是我得到的错误如下:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 24 bytes)
Run Code Online (Sandbox Code Playgroud)
如果我将内存限制增加到1GB,甚至会出现错误.
我试图通过使用XDebug和KCacheGrind(作为PHPEdit的一部分)来分析问题,但我真的不明白这些值:(
我正在寻找一种工具或方法(Quick and Simple,因为我没有太多时间)来找出为什么分配内存而不是再次释放.
编辑
要清除这里的一些内容,我的代码是:
$handle = fopen($geonameBasePath . 'allCountries.txt','r');
$i = 0;
$batchSize = 100;
if($handle) {
while (($buffer = fgets($handle,16384)) !== false) {
if( $buffer[0] == '#') //skip comments
continue;
//split parts
$parts = explode("\t",$buffer);
if( $parts[6] != 'P')
continue;
if( $i%$batchSize == 0 ) {
echo 'Flush & Clear' . PHP_EOL;
$em->flush();
$em->clear();
}
$entity = $em->getRepository('MyApplicationBundle:City')->findOneByGeonameId( $parts[0] …Run Code Online (Sandbox Code Playgroud)