有没有办法在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.
我有一个巨大的代码基础,其中有几个命名空间的范围,不幸的是我错过了我的方法所在的命名空间。
如果我只有一个方法名,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.