gpt4 book ai didi

GDB 重置 LD_LIBRARY_PATH

转载 作者:行者123 更新时间:2023-12-03 22:48:19 25 4
gpt4 key购买 nike

在 Ubuntu 上运行 GDB 7.4-2012.02 并且遇到我无法在其他平台上复制的奇怪行为。

bash$ export LD_LIBRARY_PATH=my_path
bash$ export LD_LIBRARY_PATH2=my_path2
bash$ gdb
GNU gdb (Ubuntu/Linaro 7.4-2012.02-0ubuntu2) 7.4-2012.02
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>.
(gdb) shell echo $LD_LIBRARY_PATH

(gdb) shell echo $LD_LIBRARY_PATH2
my_path2

可以看出,GDB 正在重置 LD_LIBRARY_PATH 但没有重置其他导出的变量。为什么要这样做?是否有一些我不知道是什么原因导致的设置?我的 ~/.gdbinit 是空的,即使使用 gdb -n 行为仍然存在.

此外,在退出登录 shell 后:
bash$ echo $LD_LIBRARY_PATH
my_path
bash$ $SHELL -c 'echo $LD_LIBRARY_PATH'
my_path
bash$ $SHELL
hi from .bashrc
bash$ echo $LD_LIBRARY_PATH
my_path

所以我不认为我的启动脚本是问题所在。

最佳答案

So I don't think my startup scripts are the issue.



是的,它们就是问题所在(我知道 GDB 不会干扰您的 LD_LIBRARY_PATH 环境)。

更新:

毕竟启动脚本不是问题。

经过一些调试,user2601195 发现以下变量都没有设置: GCONV_PATH , GETCONF_DIR , HOSTALIASES , LD_AUDIT , LD_DEBUG , LD_DEBUG_OUTPUT , LD_DYNAMIC_WEAK , LD_LIBRARY_PATH , LD_ORIGIN_PATH , LD_PRELOAD
这些是 glibc considers insecure 的环境变量, 并取消 setuid 二进制文件的设置。原来,实际上是 gdb被调用的是 suid-root:
-rwsr-sr-x 1 root root 5975928 Mar 15 2012 /usr/bin/gdb

这解释了这个问题。

关于GDB 重置 LD_LIBRARY_PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23018336/

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