Articles of valgrind

Valgrind给getline()给出错误

我有一个函数调用getline() ,它读取标准文本文件中的行。 这些行以\r\n结尾,因为这是规范所要求的,因为它是VCARD文件的“互联网标准”。 无论如何,我在OpenSUSE 11.3上通过Valgrind运行这个宝贝,并带有最新的GCC和Valgrind版本。 没有错误。 然而,由于与这个问题没有关系的原因,我把发行版切换到Back Track 4(基于Ubuntu),现在我得到了一吨Valgrind错误: ==21536== Conditional jump or move depends on uninitialised value(s) ==21536== at 0x40164A1: (within /lib/ld-2.11.1.so) ==21536== by 0x4007C04: (within /lib/ld-2.11.1.so) ==21536== by 0x4002A2C: (within /lib/ld-2.11.1.so) ==21536== by 0x4014206: (within /lib/ld-2.11.1.so) ==21536== by 0x4000C6C: (within /lib/ld-2.11.1.so) ==21536== by 0x4000856: (within /lib/ld-2.11.1.so) ==21536== ==21536== Conditional jump or move depends […]

我可以让valgrind忽略glibc库吗?

是否可以告诉valgrind忽略一些库? 特别是glibc库.. 实际问题:我有一些在正常执行中运行正常的代码。 没有泄漏等 当我尝试通过valgrind运行时,我得到核心转储和程序重新启动/停止。 核心通常指向glibc函数(通常是fseek,mutex等)。 我知道glibc / valgrind版本可能存在一些问题。 我尝试了各种valgrind版本和glibc版本,但没有运气。 有什么build议么?

valgrind – 地址 – 在大小为8的块被分配后的0字节

首先,我知道有类似的问题。 但是,我想用真正原始的C数据types有一个更普遍的简单问题。 所以在这里。 在main.c我调用一个函数来填充这些string: int main (int argc, char *argv[]){ char *host = NULL ; char *database ; char *collection_name; char *filename = ""; char *fields = NULL; char *query = NULL; … get_options(argc, argv, &host, &database, &collection_name, &filename, &fields, &query, &aggregation); 里面的get_options : if (*filename == NULL ) { *filename = (char*)realloc(*filename, strlen(*collection_name)*sizeof(char)+4); strcpy(*filename, […]

如何告诉valgrind memcheck分叉进程?

我有一个stream程x ,我想检查与valgrind泄漏。 问题是x由y运行, y依次由z运行。 我不能运行x独立,因为y和z为x设置环境,例如环境variables,命令行开关, x所需的文件等。 有什么办法可以告诉valgrind在z上运行,但是要遵循它发现的任何分叉并且报告它们? 有什么办法可以告诉valgrind遵循任何分叉,但只报告名为x的进程? 有什么办法可以告诉valgrind附加到已经运行的进程,我可以用gdb做的方式吗? 我不知道这是否重要,但我正在SuSE64 linux和valgrind-2.4.0下运行。 谢谢!

我怎样才能使用valgrind的内存configuration文件

你能告诉我如何使用valgrind的内存configuration文件? 我从googlefind的文章谈到如何使用valgrind进行内存泄漏。 我感兴趣的是如何使用内存分析(即有多less内存被什么类使用)? 谢谢。

每当调用malloc / free时输出到stderr

在Linux / GCC / C ++中,每当调用malloc / free / new / delete时,我都想logging一些stderr。 我想了解一个库的内存分配,所以我想在运行unit testing的时候生成这个输出。 我使用valgrind进行mem泄漏检测,但是我找不到一个让它只logging分配的选项。 有任何想法吗? 我正在寻找最简单的解决scheme。 重新编译库不是一个选项。

如何更新make 3.81 linux

我是Linux新手(昨天安装了新的),我需要它在我的大学编程课程,我被告知要安装特定版本的特定程序,但我已经使用apt-get install来安装他们(以前做过apt-get更新)他们没有在正确的版本。 我需要的程序是4.0和valgrind 3.10.1。 apt-get installs make 3.81和valgrind 3.10.0.SVN。 我已经尝试input“apt-get install make4.0”和“apt-get install valgrind10.3.1”无济于事。 我已经从互联网上下载了它们,并按照我能理解的安装新版本的说明进行操作,但它一直说我有旧的版本。 (我不确定是否可以在这里发布直接链接,如果我可以让我知道,我会张贴我从哪里得到他们)。 我做错了什么? 我怎样才能解决这个问题? 我目前正在运行Linux Mint。 预先感谢您的任何答复。

Ubuntu System Monitor和valgrind在C ++应用程序中发现内存泄漏

我用C ++编写了一个应用程序,它使用了一些外部的开源库。 我试图看看Ubuntu系统监视器有关于我的过程如何使用资源的信息,我注意到驻留内存继续增加到非常大的值(超过100MiB)。 这个应用程序应该在embedded式设备上运行,所以我必须小心。 我开始认为应该有(一些)内存泄漏,所以我使用valgrind。 不幸的是,似乎valgrind没有报告显着的内存泄漏,只有我使用的库中的一些小问题,仅此而已。 那么,我是否必须得出结论:我的algorithm真的使用了那么多的内存? 对我来说这似乎很奇怪…或者,我误解了系统监视器列的含义? 在与软件分析相关的时候,有人能澄清系统监视器中“虚拟内存”,“驻留内存”,“可写内存”和“内存”的含义吗? 我应该期望这些值能够立即表示我的进程在RAM中占用了多less内存? 在过去,我使用了能够告诉我在哪里使用内存的工具,比如Apple Profiling Tools。 有什么类似的我可以在Linux中使用? 谢谢!

Valgrind不显示行号

我试图找出我在哪里使用Valgrind无效写入一块内存。 它告诉有这样一个问题,也是在什么function上,而不是在什么方面。 虽然这个函数很小,但我想要在Valgrind中显示行号。 我在Valgrind的一些输出中看到了这个,但是现在他们没有被显示,我想知道为什么。 输出如下: niklas@emerald:~/Arbeitsfläche/spyr/bin/Debug$ valgrind –tool=memcheck –leak-check=full –show-reachable=yes ./spyr […] ==4404== Invalid write of size 4 ==4404== at 0x8048849: sp_ParticleBuffer_init (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr) ==4404== by 0x8048BFC: sp_ParticleSystem_createParticle (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr) ==4404== by 0x8048691: main (in /home/niklas/Arbeitsfläche/spyr/bin/Debug/spyr) ==4404== Address 0x422a0a0 is 4 bytes after a block of size 4 alloc'd ==4404== at 0x402BE68: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) […]

pthread_exit与返回

我有一个可连接的pthread亚军函数定义如下: void *sumOfProducts(void *param) { … pthread_exit(0); } 这个线程应该join主线程。 每当我通过Valgrind运行我的程序,我会得到以下漏洞 : LEAK SUMMARY: definitely lost: 0 bytes in 0 blocks indirectly lost: 0 bytes in 0 blocks possibly lost: 0 bytes in 0 blocks still reachable: 968 bytes in 5 blocks suppressed: 0 bytes in 0 blocks ERROR SUMMARY: 0 errors from 0 contexts (suppressed: […]