为什么 gdb 不通过 sharedlibrady 加载 libdl? heaptrack 不工作
why gdb don't load libdl over sharedlibrady ? and heaptrack not working
我用Ubuntu14.04
我尝试使用 https://github.com/KDE/heaptrack 在我的 运行ning C++ 程序中检测内存泄漏
当 heaptrack shell 脚本 运行ning
gdb --batch-silent -n -iex="set auto-solib-add off" -p $pid \
--eval-command="sharedlibrary libdl" \
--eval-command="call (void) dlmopen(0x00, \"$LIBHEAPTRACK_INJECT\", 0x002)" \
--eval-command="sharedlibrary libheaptrack_inject" \
--eval-command="call (void) heaptrack_inject(\"$pipe\")" \
--eval-command="detach"
我看到以下错误消息
No symbol "dlmopen" in current context.
No symbol "heaptrack_inject" in current context.
当我手动 运行 gdb 时
gdb -p XXX
(gdb) sharedlibrary libdl
我看到其他错误信息
No loaded shared libraries match the pattern `libdl'.
但是 libdl.so 存在于我的文件系统中
# find / -name libdl*.so
/usr/lib/debug/lib/x86_64-linux-gnu/libdl-2.19.so
/usr/lib/x86_64-linux-gnu/libdl.so
/lib/x86_64-linux-gnu/libdl-2.19.so
为什么 gdb 不通过 sharedlibrary 命令加载 libdl?
Why gdb don't load libdl over sharedlibrary command ?
这条消息:
No loaded shared libraries match the pattern `libdl'.
表示您的劣质(正在调试)进程不会link反对libdl
。你可以用(gdb) info shared
找到你的下级拥有的所有个库,并确认libdl
不在其中。
GDB 本身不会修改加载的库集。
find / -name libdl*.so
这是不相关的。 libdl.so
存在,但这并不意味着每个进程都会加载它(您的进程 不会 )。
我用Ubuntu14.04
我尝试使用 https://github.com/KDE/heaptrack 在我的 运行ning C++ 程序中检测内存泄漏
当 heaptrack shell 脚本 运行ning
gdb --batch-silent -n -iex="set auto-solib-add off" -p $pid \
--eval-command="sharedlibrary libdl" \
--eval-command="call (void) dlmopen(0x00, \"$LIBHEAPTRACK_INJECT\", 0x002)" \
--eval-command="sharedlibrary libheaptrack_inject" \
--eval-command="call (void) heaptrack_inject(\"$pipe\")" \
--eval-command="detach"
我看到以下错误消息
No symbol "dlmopen" in current context.
No symbol "heaptrack_inject" in current context.
当我手动 运行 gdb 时
gdb -p XXX
(gdb) sharedlibrary libdl
我看到其他错误信息
No loaded shared libraries match the pattern `libdl'.
但是 libdl.so 存在于我的文件系统中
# find / -name libdl*.so
/usr/lib/debug/lib/x86_64-linux-gnu/libdl-2.19.so
/usr/lib/x86_64-linux-gnu/libdl.so
/lib/x86_64-linux-gnu/libdl-2.19.so
为什么 gdb 不通过 sharedlibrary 命令加载 libdl?
Why gdb don't load libdl over sharedlibrary command ?
这条消息:
No loaded shared libraries match the pattern `libdl'.
表示您的劣质(正在调试)进程不会link反对libdl
。你可以用(gdb) info shared
找到你的下级拥有的所有个库,并确认libdl
不在其中。
GDB 本身不会修改加载的库集。
find / -name libdl*.so
这是不相关的。 libdl.so
存在,但这并不意味着每个进程都会加载它(您的进程 不会 )。