如何在 gdb 中为匿名命名空间设置断点?

Dip*_*jan 5 c++ gdb namespaces

在我的代码库中,有一些在匿名命名空间中定义的回调函数。我正在 gdb 中调试,我想使用函数名在函数中设置断点。我还尝试使用 filename : linenum 放置断点,但是如果文件已经加载,这通常会起作用,否则它会说“找不到源文件”在将来的共享库加载时使断点挂起?(y 或 [n]) n

因此,解决方法是,一旦调试器位于同一个文件中,我就可以使用 filename : line number 设置断点

但是有没有其他方法可以在匿名命名空间内设置断点?

相关的stackoverflow 问题: 如何在Visual Studio 中的匿名命名空间内按函数名称设置断点?

但这并不能解决这里的问题。

根据stackoverflow中的一些帖子,

  1. 我尝试使用 ::function_name() 但这不起作用。
  2. 匿名命名空间::function_name()

命名空间 { int function_name(int a, int b) { return a+b; } }

“未找到源文件”/root/workspace/ProtocolInterface.cpp。在未来的共享库加载时使断点挂起?(y 或 [n]) y

即使断点挂起,它也不会在提到的函数处中断。

小智 6

我认为匿名命名空间必须在括号中。

(gdb) b (匿名命名空间)::function_name

它确实对我有用,请试一试。