Debugging

lldb 在 Alpine Linux 上掛起

  • January 26, 2019

我正在嘗試在 Alpine Linux V3.8 上執行 lldb,但是在嘗試調試任何程序時,它會掛起。

我正在使用儲存庫中的 lldb 5.0.1-r0 edge/testing,這是目前 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,但最好讓它與打包版本一起使用。非常感謝!

通過遵循https://lldb.llvm.org/build.html上的官方建構說明,使用以下 CMake 參數,我能夠從最新來源 8.0.0 主幹建構功能性 lldb :

cmake ../llvm -GNinja -DCMAKE_BUILD_TYPE=Release

建構需要一段時間,但產生了一個很好的 lldb 建構,它沒有掛起並且似乎工作得很好。

所以看起來,這個lldb=5.0.1-r0包確實壞了,至少在我的 Alpine 設置中是這樣。

引用自:https://unix.stackexchange.com/questions/466355