用于Linux守护进程的MALLOC_CHECK_

时间:2014-02-20 15:16:00

标签: c heap-corruption

我们可以将MALLOC_CHECK_用于linux守护进程吗?

基本上我想检查一个另一个进程(一个C程序),它作为守护进程运行,并在我的应用程序(一个C程序)使用它时崩溃(其他进程)。 崩溃如下:

#0  0xffffe430 in __kernel_vsyscall ()
#1  0xf7426e30 in raise () from /lib/libc.so.6
#2  0xf7428765 in abort () from /lib/libc.so.6
#3  0xf7465d75 in __libc_message () from /lib/libc.so.6
#4  0xf746bd04 in malloc_printerr () from /lib/libc.so.6
#5  0xf746d613 in _int_free () from /lib/libc.so.6
#6  0xf747074d in free () from /lib/libc.so.6
#7  0xf6043a61 in BufferFree (memblk=0xf1f82f90) at ../allocator/alloclib.c:447

还有其他方法可以调试其他的valgrind吗?

1 个答案:

答案 0 :(得分:0)

如何启用MALLOC_CHECK _

下面的文章介绍了MALLOC_CHECK _

的用法

MALLOC_CHECK _ 可以在触发守护程序的脚本中使用。在脚本的export下面,将启用malloc检查使用该脚本触发的所有守护程序。

export MALLOC_CHECK_=X, Where X can be 0,1 or 3
  

如果MALLOC_CHECK_设置为0(零),则内存管理功能   仅容忍错误并且不发出警告。也许是   如果我们被其他人阻止找到一个内存错误,则很有用   目前不方便修复;它可能允许我们使用其他   追查其他内存错误的工具。如果您   正在运行可在另一个系统上运行但不在Linux上运行的代码。它   可以提供一种快速的解决方法,它可以使代码暂时   功能,然后才能解决错误。

     

如果MALLOC_CHECK_设置为1(一),则内存管理功能   当出现问题时,输出有关标准错误的警告消息   注意到了。如果我们不知道任何问题,只是   希望在存在任何问题时得到通知。

     

如果MALLOC_CHECK_设置为2(两个),则内存管理功能   发现问题时,请致电abort()。从内部这是最有用的   调试器或启动应用程序或守护程序的外壳程序。它允许   内存管理功能启动后将立即获得回溯   发现错误,提供最接近错误点的信息   错误发生了。如果核心是由内存损坏引起的,我们   了解有关内存分配的更多信息。这对更好   故障排除并确定在哪里/哪个应用程序覆盖了   内存地址。

     

可以通过将MALLOC_CHECK_设置为3来组合设置1和2   (三)。这将启用以下警告信息的打印输出   标准错误(1),并且在发现问题时将调用abort()。