valgrind相关内容
我遇到了有关丢失内存的 valgrind 错误问题.这是我的代码: if((err = pthread_create(&handlert, NULL, &handler, NULL)) != 0) perror(..)if((err = pthread_create(&mastert, NULL, &createmaster, NULL)) != 0) perror(..)for(int i =
..
我正在调试在我们的一项测试中发生的崩溃.我们有一个用 C++ 编写的 ODBC 驱动程序,正在使用我们的测试工具(称为“Touchstone")通过 iODBC 进行测试,该工具也是用 C++ 编写的. 我已经使用 Oracle Solaris Studio 12.4(不是 GCC)在 Solaris 10 (x86) 上以 64 位模式编译了所有三个. 只有在 Touchstone
..
这是我的程序 int* fun1(void){整数 n=9;int *pf=&n;cout 程序的编译和运行不会出现任何问题,但使用 valgrind 时会出现消息/警告“大小 4 的无效读取". 欢迎任何解决警告的帮助 解决方案 n是fun1()中的局部变量,退出函数后不再有效.
..
我将 Valgrind 交叉编译到 openwrt x86 平台.在目标上运行时,它不会检测到任何泄漏.在 Ubuntu 上,它运行良好. 我的测试程序很简单 main(){char *p = malloc(10000);*(p-1) = 1;} 相关编译步骤 i486-openwrt-linux-uclibc-gcc -c -o leak.o -pipe -march=i486 -f
..
(原帖在这里) 考虑以下明显有缺陷的程序: #include int main(){char string1[10] = "123456789";char *string2 = "123456789";strcat(string1, string2);} 并假设编译它: gcc program.c -ggdb 并在其上运行 valgrind: valgrind --track-or
..
不断获取 printf 和 scanf 语句的可访问内存泄漏.我需要完全没有泄漏.当我运行报告时,它说我在打印语句和扫描语句中获得了可到达的泄漏.我的问题是如何修复泄漏? 这是 valgrind 报告: kidslove-MacBook:src kidslove$ valgrind --leak-check=full --show-leak-kinds=all ./a.out ==6
..
让我们考虑这个简单的测试程序: #include #include int main(int argc, char *argv[]){字符缓冲区[256];国际我;strcpy(buf,"Hello world!");我 = strlen(buf);printf("字符串长度为 %d.\n",i);返回0;} 在使用 Intel C++ 编译器并打开优化 (O3) 对其进行编译时,我从 val
..
我们正试图在 Valgrind 报告的 C++ 项目中追踪条件跳转或移动取决于未初始化的值.发现中提供的地址并没有真正的帮助,因为它指向 GCC 扩展程序集块的末尾,而不是导致问题的实际变量. 根据 Valgrind's 用 Valgrind 消除未定义的值,最简单的方法,我们可以在包含 后使用 VALGRIND_CHECK_MEM_IS_DEFINED 或 VALGRIND_CHECK_V
..
我想知道这条消息意味着什么: ==18151== 线程 #1 中的 brk 段溢出:无法增长到 0x4a26000 请注意,代码运行良好且输出正确.我应该忽略这条消息吗?这是什么意思? 解决方案 我认为你可以忽略它.我在一些似乎完美运行的代码中的新分配中收到了消息,我也在以下代码中收到了消息: #include 构造东西{东西():a1(0),b1(0){}无符号短a1;无符号短 b
..
我有一个大程序要运行.使用 valgrind 需要几个小时才能运行.我听说有一些东西可以让我们为程序中的特定函数调用 valgrind.其余程序将正常执行(没有 valgrind env).任何人都可以帮我解决这个问题.我尝试通过互联网搜索它,可能是我错过了要搜索的词. 解决方案 这完全取决于您要使用的工具.对于 callgrind(valgrind 中的分析器),有一个选项 --togg
..
我正在使用 Valgrind 来查找我的 C 程序的内存泄漏,尽管它看起来运行良好并显示分配和释放的内存.但是,我想知道它为什么会抛出这个错误以及它的后果是什么. 这里是错误的片段: ==483== Memcheck,一个内存错误检测器==483== 版权所有 (C) 2002-2017,以及 GNU GPL,由 Julian Seward 等人所有.==483== 使用 Valgrind
..
例如 ==26460== 在丢失记录 2 of 105 中 1 个块中的 2 个字节仍然可以访问==26460== 在 0x4C28BE3:malloc (vg_replace_malloc.c:299)==26460== by 0x580D889:strdup(在/usr/lib64/libc-2.17.so 中)==26460== 由 0x4F50AF: init (init.c:468)=
..
这是我的代码: #include#include#includevoid main(int arge, char *argv[]){文件 *f1;char ch,*fn="~/lyrics/";strcat(fn,argv[1]);strcat(fn,".txt");if( (f1 = fopen(fn,"r"))==NULL ){printf("\n错误的文件名\n%s 未找到",argv[1
..
我对 C 很陌生,似乎无法弄清楚以下代码有什么问题. int main() {char filen[] = "file.txt";FILE *file = fopen ( filen, "r" );如果(文件!= NULL){字符行[128];while ( fgets ( line, sizeof line, file ) != NULL )/* 读取一行 */{国际我;字符 *结果;for(
..
整个测试代码包含在 main.cpp 中,如下所示: #include 使用 std::cout;使用 std::endl;void f(int i) {int* pi = 新整数;*pi = i;std::cout
..
我在这里找到的大多数问题都提供了一段代码,并由指出实际错误的人回答.我的问题是关于一般未初始化值的条件跳转.我可以理解,如果确定此分配仅完成一次并且在程序的生命周期内可能需要,则不必在程序结束时清除一块内存.据我所知,当程序终止时,GType 系统会留下大量未释放的内存.这些未释放的块可以被视为“误报".但是“有条件跳转或移动未初始化的值"会是误报吗?我唯一能想到的是有人通过读取随机地址来实现(坏
..
我有一个使用各种第三方共享对象库的 linux x86 应用程序.我怀疑这些库正在泄漏内存(因为它不可能是我的代码;-) 我尝试了可信赖的 valgrind,但它死得很惨,因为 其中一个第三方库正在使用一个晦涩的 x86 指令,该指令valgrind 没有实现. 我发现了对 DUMA 的建议 和试一试(使用 LD_PRELOAD 技术在运行时引入 DUMA),但它中止了对未通过 D
..
我只是花了一些时间来追查一个错误,归结为以下问题.代码错误地覆盖了堆栈,我认为它覆盖了函数调用的返回地址.返回后,程序将崩溃并且堆栈将被破坏.在 valgrind 中运行程序会返回一个错误,例如: vex x86->IR:未处理的指令字节:0xEA 0x3 0x0 0x0==9222== valgrind:地址 0x4e925a8 处的指令无法识别. 我认为这是因为返回跳转到一个随机位置,其中
..
我正在安装 Valgrind,但遇到一些问题.我的平台信息: Linux xx-ThinkPad-X61 3.2.0-39-generic-pae #62-Ubuntu SMP Wed Feb 27 22:25:11 UTC 2013 i686 i686 i386 GNU/Linux 我按照valgrind文件夹中README文件的安装说明进行安装../configure ->make ->
..
==13890== 条件跳转或移动取决于未初始化的值==13890== 在 0x4E7E4F1:vfprintf (vfprintf.c:1629)==13890== 由 0x4E878D8: printf (printf.c:35)==13890== 由 0x400729: main (001.c:30)==13890== 未初始化的值是由堆栈分配创建的==13890== 在 0x400617:
..