lldb 在 Alpine Linux 上挂起

lldb 在 Alpine Linux 上挂起

我尝试在 Alpine Linux V3.8 上运行 lldb,但是当尝试调试任何程序时,它会挂起。

我使用edge/testing存储库中的 lldb 5.0.1-r0,这是 Alpine 存储库中当前唯一可用的版本:

lldb policy:
  5.0.1-r0:
    lib/apk/db/installed
    http://dl-cdn.alpinelinux.org/alpine/edge/testing

运行 strace,它似乎被困在等待互斥锁上:

...
mmap(NULL, 94208, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb866f10000
mprotect(0x7fb866f12000, 86016, PROT_READ|PROT_WRITE) = 0
clone(child_stack=0x7fb866f26a68, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID|0x400000, parent_tidptr=0x7fb866f26b20, tls=0x7fb866f26ae8, child_tidptr=0x7fb866f26b20) = 4302
futex(0x7fb866f3db20, FUTEX_WAIT, 4300, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=4301, si_uid=1000, si_status=1, si_utime=1, si_stime=0} ---
futex(0x7fb866f3db20, FUTEX_WAIT, 4300, NULL

沿着这个线索,我发现了 Debian 8 上的 LLDB 3.8.0 中出现的一个非常相似的问题,描述为这里,但不幸的是没有解决方案。

这是 Alpine 上 lldb 的已知问题,还是我缺少一些设置步骤?

我的下一步是从源代码构建最新的 lldb,但最好让它与打包版本一起使用。非常感谢!

答案1

我能够按照官方构建说明从最新来源 8.0.0 trunk 构建一个功能性 lldbhttps://lldb.llvm.org/build.html,具有以下 CMake 参数:

cmake ../llvm -GNinja -DCMAKE_BUILD_TYPE=Release

构建需要一段时间,但生成了一个很好的 lldb 构建,它没有挂起并且似乎工作得很好。

看来,这个lldb=5.0.1-r0包确实坏了,至少在我的 Alpine 设置上是这样。

相关内容