首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gdb:当前上下文中没有符号“郁金香”

gdb:当前上下文中没有符号“郁金香”
EN

Stack Overflow用户
提问于 2016-02-15 11:06:26
回答 1查看 3.5K关注 0票数 1

我试图编译我的程序并使其可执行,但每次我试图打印它时都会说:“在当前的上下文中,没有符号”郁金香“。”

这是我的代码:

代码语言:javascript
复制
#include <stdlib.h>
#include <stdio.h>

int main() {
unsigned long *daffodil = (unsigned long *) malloc(sizeof(unsigned long));
if (daffodil == (unsigned long *) NULL)
exit(EXIT_FAILURE);
*daffodil = 170;
unsigned long *tulip = daffodil;
unsigned long *carnation = (unsigned long *) malloc(sizeof(unsigned long));
if (carnation == (unsigned long *) NULL)
exit(EXIT_FAILURE);
*carnation = 995;
unsigned long *lily = tulip;
unsigned long crocus = 953;
unsigned long *zinnia = &crocus;
(void) printf("Registering daffodil: %lu.\n", *daffodil);
(void) printf("Registering tulip: %lu.\n", *tulip);
(void) printf("Registering carnation: %lu.\n",*carnation);
(void) printf("Registering lily: %lu.\n", *lily);
(void) printf("Registering crocus: %lu.\n", crocus);
(void) printf("Registering zinnia: %lu.\n", *zinnia);
carnation = (unsigned long *) NULL;
free(daffodil);
free(carnation);

return EXIT_SUCCESS;
}

这就是我在航站楼做的事:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-15 11:10:32

为了查看GDB中的局部变量,您必须中断该函数中的程序执行。您正在尝试打印程序终止后的值,这是不可能的。

尝试在第10行放置一个断点,我认为:

代码语言:javascript
复制
(gdb) br 10
(gdb) run
(gdb) print tulip

您还可以在main开始时中断,然后前进,直到初始化变量为止:

代码语言:javascript
复制
(gdb) br main
(gdb) run
(gdb) next
(gdb) next
(gdb) ...
(gdb) print tulip

main的断点非常频繁,以至于gdb有一个自动执行该操作的命令:start

如果您对变量特别感兴趣,则可以显示它,以便在每一步都自动打印它:

代码语言:javascript
复制
(gdb) start
(gdb) display tulip
(gdb) next
(gdb) next
(gdb) ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35407741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档