gpt4 book ai didi

c++ - 为什么 gdb 不通过 sharedlibrady 加载 libdl? heaptrack 不工作

转载 作者:行者123 更新时间:2023-11-30 03:37:31 36 4
gpt4 key购买 nike

我使用的是 Ubuntu 14.04

我尝试使用 https://github.com/KDE/heaptrack用于检测正在运行的 C++ 程序中的内存泄漏

heaptrack shell脚本运行时

 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'.

表示您的劣质(正在调试)进程未链接到 libdl。你可以找到你的下属有(gdb) info shared所有库,并确认libdl不在其中。

GDB 本身不会修改加载库的集合。

find / -name libdl*.so

无关紧要libdl.so 存在,但这并不意味着每个进程都会加载它(您的进程不会)。

关于c++ - 为什么 gdb 不通过 sharedlibrady 加载 libdl? heaptrack 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40202455/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com