【发布时间】:2015-12-31 05:54:36
【问题描述】:
我正在 Linux 上的 GDB 中调试一个程序。我正在使用getenv 和setenv 调用来读取和设置环境变量。例如我调用setenv("TZ", "UTC", 1); 来设置时区的TZ 环境变量。
要检查是否设置了 env 变量,我正在使用 GDB 命令show environment。这将打印所有环境变量及其值。但它没有显示 TZ 正在设置。
甚至命令show environment TZ 说Environment variable "TZ" not defined.
他们是另一种检查被调试程序环境的方法吗?
p *(char *) getenv("TZ") 返回正确的值 UTC。
【问题讨论】:
-
不应该是
p (char*)getenv("TZ")吗? -
看起来
environ为 NULL。environ@@GLIBC_2.0在我的案例中是指向真实环境的那个。 stackoverflow.com/questions/6203455/… -
environ对我来说很好用,但它可能与 glibc 版本(除其他外)有关。 -
@punekr12:好的,我在答案中添加了一种打印整个环境的方法。 HTH。
标签: c++ c linux gdb environment-variables