#include <unistd.h>
#include <stdio.h>
extern char **environ;
int main(int argc, char *argv[]) {
int i = 0;
while(environ[i]) {
printf("%s\n", environ[i++]);
}
return 0;
}
这是我的运维:
(gdb) n
8 printf("%s\n", environ[i++]);
(gdb) p environ[i]
Cannot access memory at address 0x0
(gdb) n
LOGNAME=root
7 while(environ[i]) {
正如您所看到的,printf
可以打印出 environ[i]
,但是 p environ[i]
给了我 Cannot access memory at address 0x0
的错误信息,为什么呢?
ptr = environ
,那么我能够使用ptr
,但是environ
仍然是一个空指针。 - AProgrammergdb
在调试程序时启动进程时没有环境。 - pmg