在GDB中,如何设置';exec-wrapper-env';多个环境变量?

在GDB中,如何设置';exec-wrapper-env';多个环境变量?,gdb,environment-variables,environment,Gdb,Environment Variables,Environment,在GDB中,您可以使用set exec wrapper env'MYENVVAR=…'为进程设置环境变量。这很好用,但我不知道如何设置多个-是否需要使用某种分隔符?我想为一个进程设置LD_PRELOAD和LD_LIBRARY_PATH。我该怎么做?您可以使用 set exec-wrapper env VAR1=val1 VAR2=val2 设置多个环境变量。应该为shell适当地引用这些值,因此在它们周围加上单引号将是一个好主意 更详细地说: set exec wrapper命令设置一个字符串

在GDB中,您可以使用
set exec wrapper env'MYENVVAR=…'
为进程设置环境变量。这很好用,但我不知道如何设置多个-是否需要使用某种分隔符?我想为一个进程设置
LD_PRELOAD
LD_LIBRARY_PATH
。我该怎么做?

您可以使用

set exec-wrapper env VAR1=val1 VAR2=val2
设置多个环境变量。应该为shell适当地引用这些值,因此在它们周围加上单引号将是一个好主意

更详细地说:

set exec wrapper
命令设置一个字符串变量以包含命令行的其余部分

在运行可执行文件时,
gdb
执行类似以下伪代码的操作:

shell_cmd = "exec ";
if (exec_wrapper)
     shell_cmd += exec_wrapper + " ";
shell_cmd += quote_shell_metacharacters(exec_file);
execl(getenv("SHELL"), "sh", "-c", shell_cmd, (char *)0);

因此,
exec-wrapper
可以是任何在shell中前面加上
“exec”
的命令行。

谢谢,回答得非常透彻!