我们可以将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吗?
答案 0 :(得分:0)
下面的文章介绍了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()。