首页 > 解决方案 > 为什么 GDB 不进入函数体?

问题描述

int filterplugin::init(StructModelConfigNode &modelConfig)
{
  
    configdir = modelConfig.dir;
    initTrieHandle(m_adWordsHandle, 0);
    string wordsFile = configdir + "/word.txt";
    if (!loadAdWords(wordsFile.c_str()))
        m_adWordsHandle = 0;
     ...
}

当我使用 gdb 调试上面的代码时,gdb 会跳过该行:

initTrieHandle(m_adWordsHandle, 0);

我发现它initTrieHandle是在另一个 c++ 头文件中定义的:“myTrie.h”

typedef void* TRIEHANDLE;
int initTrieHandle(TRIEHANDLE &handle,const char *dicPath = 0);

但是,在整个项目中,我找不到该功能的实现initTrieHandle()。myTrie.h 中有很多其他函数定义,但没有 myTrie.cpp 或 myTrie.hpp。我找不到任何实现细节。可能正因为如此,我无法调试到这个函数,GDB 只是跳过了前面描述的行:

initTrieHandle(m_adWordsHandle, 0);

为什么会这样以及如何找到该函数的实现代码?这是别人写的项目。

标签: c++gdb

解决方案


推荐阅读