我对改变有奇怪的副作用LD_LIBRARY_PATH。
当我附加包含库的路径时,例如:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/my_path/lib
然后,一切都变得难以置信的缓慢。例如,一个简单的ls可以长达 10 秒。
ldd更改前后的输出完全相同LD_LIBRARY_PATH,我尝试使用以下命令调试慢速执行ls:strace我在两种情况下都得到完全相同的执行。执行期间甚至不会卡住ls(因为strace在 10 秒延迟期间没有输出任何内容,然后突然完美执行ls)。所以我认为它可能来自我的 shell,但这是相同的,strace在我的 bash 上运行并ls在两种情况下执行都会给我相同的strace输出:shell 执行ls并等待其执行结束(strace滞后前的最后一个输出strace是waitpid(...))。所以我猜在发布之间发生了一些错误ls及其执行,就像它是内核级问题一样。它的作用就像sleep是在ls(0 cpu 使用)上进行的。
在延迟期间,我的 CPU 和网络活动完全正常...
ls请注意,新 LD 路径中的库不与任何“标准库”冲突,因此在我的示例中不会干扰。
LD_LIBRARY_PATH因此,我对有关副作用或如何深入调试我的示例的更深入解释很感兴趣。