如何使用 watchmalloc 进行后台进程
我正在使用 Solaris x86 盒子。我的应用程序崩溃并显示以下堆栈跟踪。
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
I am using Solaris x86 box. My application crashes with following stack trace.
fed155f9 realfree (816d878) + 97 fed151be _malloc_unlocked (7e0, 8047eac, 8047e3c, feffb7d8, 8047bac, 809dd6a) + 18c fed15008 malloc (7e0) + 34
I need to debug it with "watchmalloc"
. My application will be started by system inetd process. I cannot control its execution. Please let me know how to use watchmalloc
in this scenario.
I set the following environment variable it helps only for process started from the shell.
LD_PRELOAD=watchmalloc.so.1 MALLOC_DEBUG=WATCH,RW
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
只需用设置所需变量的包装器替换您的应用程序,然后启动真正的应用程序即可。
例如:
Just replace your application by a wrapper that sets the required variables then launch the real application.
eg:
将您的应用程序重命名为 myapp.bin,然后安装一个小型 shell 脚本,例如:
! /bin/sh
LD_PRELOAD=watchmalloc.so.1
MALLCO_DEBUG=手表,RW
导出 LD_PRELOAD MALLOC_DEBUG
执行myapp.bin“$@”
What about renaming your app to lets say myapp.bin, and install a small shell script like:
! /bin/sh
LD_PRELOAD=watchmalloc.so.1
MALLCO_DEBUG=WATCH,RW
export LD_PRELOAD MALLOC_DEBUG
exec myapp.bin "$@"