Memory 如何在后台进程中使用watchmalloc

Memory 如何在后台进程中使用watchmalloc,memory,malloc,solaris,core,ld-preload,Memory,Malloc,Solaris,Core,Ld Preload,我正在使用Solaris x86 box。我的应用程序因以下堆栈跟踪而崩溃 fed155f9 realfree (816d878) + 97 fed151be _malloc_unlocked (7e0, 8047eac, 8047e3c, feffb7d8, 8047bac, 809dd6a) + 18c fed15008 malloc (7e0) + 34 我需要用“watchmalloc”调试它。我的应用程序将通过系统inetd过程启动。我无法控制它的执行。请告诉我如何在此场景中使用wa

我正在使用Solaris x86 box。我的应用程序因以下堆栈跟踪而崩溃

fed155f9 realfree (816d878) + 97 fed151be _malloc_unlocked (7e0, 8047eac, 8047e3c, feffb7d8, 8047bac, 809dd6a) + 18c fed15008 malloc (7e0) + 34
我需要用
“watchmalloc”
调试它。我的应用程序将通过系统inetd过程启动。我无法控制它的执行。请告诉我如何在此场景中使用
watchmalloc

我设置了以下环境变量,它仅对从shell启动的进程有帮助

LD_PRELOAD=watchmalloc.so.1 MALLOC_DEBUG=WATCH,RW

将应用程序重命名为myapp.bin,然后安装一个小的shell脚本,如:

! /垃圾箱/垃圾箱 LD_PRELOAD=watchmalloc.so.1 MALLCO_调试=手表,RW 导出LD_预加载MALLOC_调试
exec myapp.bin“$@”

只需用设置所需变量的包装器替换应用程序,然后启动真正的应用程序

例如:

cd
mv myapp myapp.real

猫>我的应用谢谢。解决这个问题的好方法。它解决了我的问题。我可以使用watchmalloc.so.1
cd <path to myapp>
mv myapp myapp.real
cat > myapp <<%
#!/bin/ksh
export LD_PRELOAD=watchmalloc.so.1
export MALLOC_DEBUG=RW
exec $(dirname $0)/myapp.real "$@"
%
chmod +x myapp