在lldb中调试glib / gtree

问题描述

显然是由于我对自我滥用的偏爱,我正在yacc / lex / glib / c中编写一个BASIC解释器。 BASIC程序存储为GLists的数组,数组中的每个条目代表源代码中的一行。每行都是statement_t的GList,在原始来源中用冒号分隔。

我正在尝试调试一个奇怪的问题,我认为这是由于GList的构建不正确引起的,但是我是lldb中C语言的新手,所以我不清楚如何将其拆开:

(lldb) p ps->parms._if.then_expression
(GList *) $0 = 0x0000000100704b60
(lldb) po ps->parms._if.then_expression
0x0000000100704b60
(lldb) p (statement_t *)ps->parms._if.then_expression.data
(statement_t *) $0 = 0x00000001014040c0
  Fix-it applied,fixed expression was: 
    (statement_t *)ps->parms._if.then_expression->data

then_expression是满足条件时要运行的statement_t的GList。我的代码始终只运行这些语句中的第一个,而忽略其余语句,这使我相信我的.next指针是错误的。但是如何分辨呢?一切都只是一个指针。

我认为我必须将其抛弃到statement_t上,我对语法一无所知,而examples that I find没什么用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)