LLDB:未设置 TERM 环境变量,即使已设置

LLDB: TERM environment variable not set, even though it is set

是的,我发现其他问题也有同样的问题:

  1. TERM environment variable not set on mac
  2. TERM environment variable not set
  3. how to remove "TERM environment variable not set"

...


但是,我的环境变量设置为:

$ echo $TERM
xterm-256color

但是LLDB不这么识别:

$ lldb myexecutable
(lldb) target create "myexecutable"
Current executable set to 'myexecutable' (x86_64).
(lldb) platform shell clear
TERM environment variable not set.
error: command returned with status 1

我也为 GUI 程序设置了环境变量:

envars.app(登录时 applescript 应用程序 运行。)

...
set ENV_TERM to "/bin/launchctl setenv TERM xterm-256color;"
...
do shell script ... & ENV_TERM & ...

...
set ENV_TERM to "/bin/launchctl setenv TERM xterm-256color:-dumb;"
...
do shell script ... & ENV_TERM & ...

您看到的是 "platform shell" 命令没有将 lldb 的环境传递给它生成的 shell。在 lldb 中,"platform" 可以是远程系统或本地系统 - 取决于您连接的平台 - 因此使用 lldb 的环境执行 "platform shell" 并不总是正确的做法。默认情况下,lldb 默认清除 shell 执行环境。

但是如果有一个 "platform shell" 的标志告诉它使用 lldb 的环境,那将很有用。请随意使用 lldb.llvm.org 的 bugzilla 提交一个错误(或者如果你觉得大胆的话,自己动手添加这个 - 这是一个开源项目......)

请注意,在 lldb 下启动调试进程时,您确实可以控制传递的环境。在Command Line lldb中,target.inherit-env设置控制进程是否继承lldb的环境,可以使用target.env-varsenv命令修改环境。如果您使用 Xcode,请在 运行 方案中为您正在调试的任何目标设置环境。