有没有办法在gdb中自动找到一个方法属于哪个c++命名空间?

Is there a way to automatically find which c++ namespace a method belongs to in gdb?

我有一个巨大的代码基础,其中有几个命名空间的范围,不幸的是我错过了我的方法所在的命名空间。

如果我只有一个方法名,GDB 能帮我完成这个任务吗?它可以通过名称空间搜索来找到我的方法吗?

例如:

    (gdb) b getTranslation
    Function "getTranslation" not defined.
    Make breakpoint pending on future shared library load? (y or [n]) n
    (gdb) b HPHP::jit::getTranslation
    Function "HPHP::jit::getTranslation" not defined.
    Make breakpoint pending on future shared library load? (y or [n]) n
    (gdb) b HPHP::jit::MCGenerator::getTranslation
    Breakpoint 1 at 0x16a1a058: file hhvm/hphp/runtime/vm/jit/mc-generator.cpp, line 308.
    (gdb) # Ahhh, finally!

通常我 运行 通过代码开始收集命名空间,但有时它们会很棘手,因为在 header...

中间定义了新的命名空间

使用 this question and its answers 作为提示,您可以使用例如info functions getTranslation,它应该列出所有名为 getTranslation 的函数,并带有 classes/namespaces.