Articles of valgrind

用nginx运行valgrind

我怎样才能运行valgrind对我的nginx服务器? 我已经构build了二进制文件。 在我的nginx.conf中(按照说明指导): worker_processes 1; daemon off; master_process off; 我正在这样运行: sudo /usr/local/bin/valgrind -v –tool=memcheck –leak-check=yes nginx 当我运行这个我得到一些valgrind输出如下,然后我得到一个提示回来。 有2个valgrind进程正在运行,我的服务器将不会响应“curl” – 表示无法连接到主机。 相同的curl工作正常瓦特/ valgrind。 我需要valgrind保持运行,因为我正在对nginx和我编写的模块代码(内置于nginx二进制代码中)进行testing。 我也为我的nginx版本应用了“no-pool”补丁来帮助valgrind。 我错过了什么? 输出: ==13809== Memcheck, a memory error detector ==13809== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==13809== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info […]

Valgrind未处理的指令字节:0x8F 0xEA 0xF8 0x10 0xC9 0x3 0x1D 0x0

当我编译我的C程序并在valgrind下运行时,我有以下错误: vex amd64->IR: unhandled instruction bytes: 0x8F 0xEA 0xF8 0x10 0xC9 0x3 0x1D 0x0 vex amd64->IR: REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0 vex amd64->IR: VEX=0 VEX.L=0 VEX.nVVVV=0x0 ESC=NONE vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0 ==6097== valgrind: Unrecognised instruction at address 0x4011d34. ==6097== at 0x4011D34: _dl_allocate_tls_storage (dl-tls.c:379) ==6097== by 0x4000B9A: init_tls (rtld.c:622) ==6097== by 0x40034BF: dl_main (rtld.c:1683) ==6097== […]

Valgrind:可执行程序的共享库无法加载

我的程序中有一些奇怪的内存相关的错误。 它使用英特尔mkl,因此依赖于一些特定于mkl的共享库。 当我运行我的程序时,在完成了大部分工作之后,它会发生段错误。 段错误发生在函数调用fclose()到一个非空的文件指针。 当我通过gdb运行我的程序时,stacktrace不是很有用。 因此,我想运行valgrind在我的代码中查找可能的错误。 但是,我不能从valgrind运行可执行文件。 它打印以下错误信息。 ==52778== Memcheck, a memory error detector ==52778== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. ==52778== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info ==52778== Command: ./main.exe ==52778== ./main.exe: error while loading shared libraries: libmkl_intel_lp64.so: cannot open shared object file: No such […]

在emacs中使用gdb的valgrind vgdb

我正在尝试使用valgrind vgdb命令: valgrind –vgdb-error=0 ./a.out [args] 。 当我运行target remote | /usr/lib64/valgrind/../../bin/vgdb target remote | /usr/lib64/valgrind/../../bin/vgdb在emacs gdb我得到了Non-stop mode requested, but remote does not support non-stop错误。 emacs引导的gdb命令是: gdb -i=mi a.out 。 我的版本valgrind,gdb和emacs:valgrind-3.7.0,GNU gdb(GDB)SUSE(7.5.1-2.5.1)和GNU Emacs 24.2.1。 有没有办法来解决这个问题或我的版本的gdb,valgrind或emacs不能处理我想要做的?

如何自动重新连接到由gdb内的valgrind控制的进程?

我做了一个很难debugging的内存错误,在每次命令行运行中每一次都发生一次,每次大概需要两个小时才能完成。 因此,我认为创build这样的日志可能是一个好主意: while true; do valgrind ./command 2>&1 | tee command grep -q Invalid && break done 问题是我的debugging日志和由Valgrind生成的堆栈跟踪是不够的,所以我决定添加–vgdb-error=0到命令行。 不幸的是,由于Valgrind现在在启动时添加了一个断点,我需要运行以下命令: $ gdb ./command …gdb init string follows… (gdb) target remote | /usr/lib/valgrind/../../bin/vgdb Remote debugging using | /usr/lib/valgrind/../../bin/vgdb relaying data between gdb and process 4361 Reading symbols from /lib/ld-linux.so.2…(no debugging symbols found)…done. Loaded symbols for /lib/ld-linux.so.2 [Switching […]

限制在Linux上debugging应用程序的资源使用情况

我有一个C / C ++应用程序,只在重负载下崩溃。 我通常使用valgrind和gprof来debugging内存泄漏和分析问题。 失败率大约是百万分之100。 这是一致的。 而不是重现stream量到我的应用程序,我可以表面上限制在valgrind内运行的应用程序的debugging版本可用的资源?

有没有一个Linux等效/港口freebsd hwpmc?

目前我使用valgrind。 但我看起来不影响程序的执行。

非正统的linux内核和valgrind

首先,让我道歉,如果我写错了地方。 我似乎无法find一个valgrind用户论坛来发布这种性质的东西,因为这个地方似乎相当包容,我想我会试试看。 运行我的代码时,我需要使用一些非正统的Linux内核。 我不太了解内核,因为我没有写。 我的内核,无论什么原因,看起来像扩展了默认的Linux内核的系统调用表。 看起来会发生的是,在.ko文件的insmod下,当前的标准系统调用表被扩展,从333开始,到341,原来的系统调用表被保存,当.ko被碾压。 这些额外的系统调用似乎与我正在运行的专有软件执行某种独特的IPC通信。 当然,这似乎与valgrind玩地狱。 我想用valgrind来检查我的程序当然,但valgrind总是崩溃,我的应用程序执行系统调用的瞬间。 这里是我从valgrind得到的输出,减去我宁愿的一些事情 ==26045== Thread 2: ==26045== Syscall param preadv(vector) points to unaddressable byte(s) ==26045== at 0x4000982: ??? (in /lib/ld-2.9.so) ==26045== by 0x426C756: syscall (in /lib/libc-2.9.so) ==26045== by 0x4037430: com_lock (coms.c:114) –23932– VALGRIND INTERNAL ERROR: Valgrind received a signal 11 (SIGSEGV) – exiting –23932– si_code=1; Faulting address: 0x165; […]

Valgrind在Linux上:延迟激活的开始

运用 valgrind –tool=callgrind 在Linux上 …..我想传递jar头消息到我的过程中。 但是,对于第一个例如90%的消息,我希望像平常一样处理,不要磨削,以便build立一张地图。 然后,我想激活valgrind / callgrind只为最后10%的消息。 这可能吗? 也许有一种方法可以在我的C ++代码中增加一个计数器,当它达到一定的阈值时,激活valgrind / callgrind。 您的反馈非常感谢。

valgrind可能会报告我的程序正确运行的致命错误吗?

当我运行我的程序或者当我用gdb运行它似乎运行正常,没有错误,我得到一个预期的输出。 但是当我用valgrind通过valgrind ./program运行它时,它甚至不会太远​​。 我收到一个VALGRIND INTERNAL ERROR: Valgrind received a signal 11 (SIGSEGV) – 在开始时退出。 valgrind输出完全不能帮助我。 我调用了一个subprocess,但valgrind并不遵循它。 我试图使用–trace-children=yes选项,但没有改变。 另一个问题:调用valgrind program和valgrind ./program valgrind program什么区别? 我得到的输出是: $ valgrind –tool=memcheck –trace-children=yes ./program ==2616== Memcheck, a memory error detector ==2616== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. ==2616== Using Valgrind-3.6.1 and LibVEX; rerun with -h for […]