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

fal*_*ure 2 environment gdb environment-variables

在GDB中,您可以使用设置流程的环境变量set exec-wrapper env 'MYENVVAR=...'.这很好用,但我不确定如何设置多个 - 是否需要使用某种分隔符?我想设置两个LD_PRELOADLD_LIBRARY_PATH一个过程.我该怎么做?

Mar*_*ick 6

您可以使用

set exec-wrapper env VAR1=val1 VAR2=val2
Run Code Online (Sandbox Code Playgroud)

设置多个环境变量.应该为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);
Run Code Online (Sandbox Code Playgroud)

因此,exec-wrapper可以是"exec "在shell中前面有意义的任何命令行.