GDB不会进入用户定义的功能

时间:2013-04-14 23:10:28

标签: c++ makefile gdb

我正在为左派堆编译一些代码,我想逐步完成我的levelorder遍历功能。但是,每当我在“theheap.levelorder()”到达断点并输入“step”时,gdb就会传递代码。

我正在使用-g标志进行编译并尝试使用-fno-inline无效。为什么会这样?

我的makefile如下:

all:LeftistHeap.o lab10.o
        g++ LeftistHeap.o lab10.o -g -o lab10

lab10.o:LeftistHeap.h
        g++ -fno-inline -g -c lab10.cpp

LeftistMax.o:LeftistHeap.h LeftistHeap.cpp
        g++ -fno-inline -g -c LeftistHeap.cpp

clean:
        rm *.o *~ lab10

修改 我有两个levelorder()函数:一个私有,一个公共。我知道这可能是不必要的,但它不应该导致gdb这样做。

levelorder在.h文件中声明如下:

public:
        void levelorder();

private:
        void levelorder(LNode* node);

levelorder在.cpp文件中定义如下:

void LeftistHeap::levelorder()
{
  levelorder(root);
}

void LeftistHeap::levelorder(LNode* node)
{ 
  queue<LNode*> currentLevel, nextLevel;
  currentLevel.push(root);
  while(!currentLevel.empty())
  {
    LNode* temp = currentLevel.front();
    currentLevel.pop();
    if(temp)
    {
      cout << temp->key << " ";
      if(temp->lchild != NULL)
        nextLevel.push(temp->lchild);
      if(temp->lchild != NULL)
        nextLevel.push(temp->rchild);
    }
    if(currentLevel.empty())
    {
      cout << endl;
      swapq(currentLevel, nextLevel);
    }
  }
}

0 个答案:

没有答案